# HG changeset patch # User Jaroslav Tulach # Date 1213430068 -7200 # Node ID 0ec9eb8bcd03d68b5ba4fa3fb51d4f0b0d5825dd # Parent e492694451f67a570ff912636158e06d50d15bce Onward! Towards deadlock tests. diff -r e492694451f6 -r 0ec9eb8bcd03 samples/deadlock/src/org/apidesign/deadlock/LabelProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/deadlock/src/org/apidesign/deadlock/LabelProvider.java Sat Jun 14 09:54:28 2008 +0200 @@ -0,0 +1,24 @@ +package org.apidesign.deadlock; + +import java.util.HashSet; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JLabel; +import javax.swing.JPanel; + +public class LabelProvider extends JPanel { + private static Logger LOG = Logger.getLogger(LabelProvider.class.getName()); + + // BEGIN: deadlock.provider + private HashSet allCreated = new HashSet(); + + public synchronized JLabel createLabel () { + LOG.log(Level.INFO, "Will create JLabel"); + JLabel l = new JLabel (); + LOG.log(Level.INFO, "Label created {0}", l); + allCreated.add (l); + return l; + } + // END: deadlock.provider + +} diff -r e492694451f6 -r 0ec9eb8bcd03 samples/deadlock/test/org/apidesign/deadlock/ExecutorServiceTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/deadlock/test/org/apidesign/deadlock/ExecutorServiceTest.java Sat Jun 14 09:54:28 2008 +0200 @@ -0,0 +1,34 @@ +package org.apidesign.deadlock; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import org.junit.Assert; +import org.junit.Test; + +public class ExecutorServiceTest implements Runnable { + private int cnt; + + @Test + public void showUsageOfExecutionService() throws Exception { + Runnable someRunnable = this; + + // BEGIN: deadlock.service + ExecutorService service = Executors.newSingleThreadExecutor(); + + // scheduling is quite different + Future task = service.submit(someRunnable); + + // compared to waiting + task.get(1000, TimeUnit.MILLISECONDS); + // END: deadlock.service + + Assert.assertEquals("Cnt executed", 1, cnt); + } + + public void run() { + cnt++; + } + +} diff -r e492694451f6 -r 0ec9eb8bcd03 samples/deadlock/test/org/apidesign/deadlock/LabelProviderTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/deadlock/test/org/apidesign/deadlock/LabelProviderTest.java Sat Jun 14 09:54:28 2008 +0200 @@ -0,0 +1,71 @@ +package org.apidesign.deadlock; + +import java.awt.Dimension; +import java.util.logging.Logger; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import org.junit.Test; +import org.netbeans.junit.Log; +import org.netbeans.junit.NbTestCase; +import static org.junit.Assert.*; + +public class LabelProviderTest extends NbTestCase { + static final Logger LOG = Logger.getLogger(LabelProviderTest.class.getName()); + + public LabelProviderTest(String n) { + super(n); + } + + @Override + protected int timeOut() { + return 10000; + } + + + public static class StrangePanel extends LabelProvider { + @Override + // BEGIN: deadlock.pref.size + public Dimension getPreferredSize () { + JLabel sampleLabel = createLabel(); + return sampleLabel.getPreferredSize (); + } + // END: deadlock.pref.size + } + + + + + public void testCreateLabel() { + final LabelProvider instance = new StrangePanel(); + + class R implements Runnable { + public void run() { + LOG.info("In AWT thread"); + JFrame f = new JFrame(); + f.add(instance); + f.setVisible(true); + f.pack(); + } + } + + Log.controlFlow( + Logger.getLogger("org.apidesign"), + Logger.getLogger("global"), + "THREAD: main MSG: Begin" + + "THREAD: .*AWT.* MSG: In.*thread" + + "THREAD: main MSG: Will create JLabel" + + "THREAD: .*AWT.* MSG: Will create JLabel", + 300 + ); + + R showFrame = new R(); + SwingUtilities.invokeLater(showFrame); + + LOG.info("Begin"); + JLabel result = instance.createLabel(); + assertNotNull("Creates the result", result); + } + +} \ No newline at end of file