samples/deadlock/test/org/apidesign/deadlock/logs/ParallelSortedTest.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 18:51:38 +0200
changeset 263 7e8e995065c5
parent 210 acf2c31e22d4
permissions -rw-r--r--
Tests of all modules are executed and can fail the build
jtulach@108
     1
package org.apidesign.deadlock.logs;
jtulach@108
     2
jtulach@108
     3
import java.util.logging.Handler;
jtulach@108
     4
import java.util.logging.Level;
jtulach@108
     5
import java.util.logging.LogRecord;
jtulach@108
     6
import java.util.logging.Logger;
jtulach@108
     7
import org.netbeans.junit.NbTestCase;
jtulach@108
     8
import static org.junit.Assert.*;
jtulach@108
     9
jtulach@108
    10
// BEGIN: test.parallel.test.sorted
jtulach@108
    11
public class ParallelSortedTest extends NbTestCase {
jtulach@108
    12
    public ParallelSortedTest(String testName) {
jtulach@108
    13
        super(testName);
jtulach@108
    14
    }
jtulach@108
    15
jtulach@108
    16
    @Override
jtulach@108
    17
    protected Level logLevel() {
jtulach@108
    18
        return Level.WARNING;
jtulach@108
    19
    }
jtulach@108
    20
jtulach@108
    21
    public void testMain() throws Exception {
jtulach@108
    22
        Logger.global.addHandler(new BlockingHandler());
jtulach@210
    23
        Parallel.main(null);
jtulach@263
    24
        if (Boolean.getBoolean("no.failures")) return;
jtulach@108
    25
        fail("Ok, just print the logged output");
jtulach@108
    26
    }
jtulach@108
    27
jtulach@108
    28
    private static final class BlockingHandler extends Handler {
jtulach@108
    29
jtulach@108
    30
        boolean runSecond;
jtulach@108
    31
jtulach@108
    32
        public synchronized void publish(LogRecord record) {
jtulach@108
    33
            if (!record.getMessage().startsWith("cnt")) {
jtulach@108
    34
                return;
jtulach@108
    35
            }
jtulach@154
    36
            boolean snd = Thread.currentThread().getName().equals("2nd");
jtulach@154
    37
            if (runSecond == snd) {
jtulach@108
    38
                notify();
jtulach@108
    39
                runSecond = !runSecond;
jtulach@108
    40
            }
jtulach@108
    41
            try {
jtulach@108
    42
                wait(500);
jtulach@108
    43
            } catch (InterruptedException ex) {
jtulach@108
    44
            }
jtulach@108
    45
        }
jtulach@108
    46
jtulach@108
    47
        public void flush() {
jtulach@108
    48
        }
jtulach@108
    49
jtulach@108
    50
        public void close() {
jtulach@108
    51
        }
jtulach@108
    52
    }
jtulach@108
    53
}
jtulach@108
    54
// END: test.parallel.test.sorted