Using different semantics for locking and fixing hidden null pointer exception in tests
1.1 --- a/logger/uihandlerserver/src/java/org/netbeans/server/uihandler/statistics/Actions.java Fri Jun 22 02:36:53 2007 +0000
1.2 +++ b/logger/uihandlerserver/src/java/org/netbeans/server/uihandler/statistics/Actions.java Fri Jun 22 07:04:52 2007 +0000
1.3 @@ -219,7 +219,7 @@
1.4 static Calls process(LogRecord rec) {
1.5 if ("UI_ACTION_EDITOR".equals(rec.getMessage())) { // NOI18N
1.6 String name = param(rec, 4);
1.7 - if (name.equals("insert-break")) { // NOI18N
1.8 + if (name != null && name.equals("insert-break")) { // NOI18N
1.9 return Calls.EMPTY;
1.10 }
1.11 if (name != null && name.length() > 0) {
2.1 --- a/logger/uihandlerserver/test/org/netbeans/server/uihandler/DatabaseTestCase.java Fri Jun 22 02:36:53 2007 +0000
2.2 +++ b/logger/uihandlerserver/test/org/netbeans/server/uihandler/DatabaseTestCase.java Fri Jun 22 07:04:52 2007 +0000
2.3 @@ -22,7 +22,7 @@
2.4 import java.io.File;
2.5 import java.io.InputStreamReader;
2.6 import java.util.Map;
2.7 -import java.util.concurrent.Semaphore;
2.8 +import java.util.concurrent.ExecutionException;
2.9 import java.util.logging.Level;
2.10 import java.util.logging.LogRecord;
2.11 import java.util.logging.Logger;
2.12 @@ -37,7 +37,7 @@
2.13 * @author Jindrich Sedek
2.14 */
2.15 public class DatabaseTestCase extends NbTestCase{
2.16 - protected Semaphore sem;
2.17 + private static Logger LOG;
2.18 protected PersistenceUtils perUtils;
2.19 protected File data;
2.20 protected LogsManager logsManager;
2.21 @@ -48,14 +48,14 @@
2.22 }
2.23
2.24 protected void setUp() throws Exception {
2.25 + LOG = Logger.getLogger("test." + getName());
2.26 +
2.27 clearWorkDir();
2.28
2.29 super.setUp();
2.30 - sem = new Semaphore(0);
2.31 Matcher.read(new InputStreamReader(Matcher.class.getResourceAsStream("componentmapping.txt")));
2.32 PersistenceUtils.setDefault(PersistenceUtils.TEST_PU);
2.33 perUtils = PersistenceUtils.getInstance(PersistenceUtils.TEST_PU);
2.34 - Logger.getLogger("").addHandler(new TestHandler(sem));
2.35 data = new File(getWorkDir(), "data");
2.36 data.mkdirs();
2.37 logsManager = LogsManager.createManager(data);
2.38 @@ -67,13 +67,23 @@
2.39 return Level.INFO;
2.40 }
2.41
2.42 + @SuppressWarnings("unchecked")
2.43 protected Map<Integer, LogRecord> addLog(PageContext page, File log, String ip, String userId) throws Exception{
2.44 logsManager.addLog(log, ip);
2.45 - sem.acquire();
2.46 + waitLogsParsed();
2.47 + LOG.fine("Feeding page for user " + userId);
2.48 logsManager.preparePageContext(page, userId);
2.49 return (Map<Integer, LogRecord>) page.getAttribute("lastExceptions");
2.50 }
2.51
2.52 + protected final void waitLogsParsed() throws Exception {
2.53 + LOG.fine("waitLogsParsed");
2.54 + logsManager.preparePageContext(LogsManagerTest.createPageContext(), "noID");
2.55 + LOG.fine("waitLogsParsed - after preparePageContext");
2.56 + DbInsertion.waitInsertFinished();
2.57 + LOG.fine("waitLogsParsed - after DbInsertion");
2.58 + }
2.59 +
2.60 protected Map<Integer, LogRecord> addLog(PageContext page, File log, String userId) throws Exception{
2.61 return addLog(page, log, "127.0.0.1", userId);
2.62 }
2.63 @@ -84,7 +94,7 @@
2.64
2.65 protected void waitLog(File log, String ip) throws Exception{
2.66 logsManager.addLog(log, ip);
2.67 - sem.acquire();
2.68 + waitLogsParsed();
2.69 }
2.70
2.71 }
3.1 --- a/logger/uihandlerserver/test/org/netbeans/server/uihandler/DbInsertionTest.java Fri Jun 22 02:36:53 2007 +0000
3.2 +++ b/logger/uihandlerserver/test/org/netbeans/server/uihandler/DbInsertionTest.java Fri Jun 22 07:04:52 2007 +0000
3.3 @@ -46,6 +46,13 @@
3.4 protected void tearDown() throws Exception {
3.5 super.tearDown();
3.6 }
3.7 +
3.8 + @Override
3.9 + protected Level logLevel() {
3.10 + return Level.FINE;
3.11 + }
3.12 +
3.13 +
3.14
3.15 @Test
3.16 public void testRun() throws Exception {
3.17 @@ -78,7 +85,7 @@
3.18 Object[] insertionResult = insertion.start();
3.19 assertFalse("THIS ISSUE IS NOT ANY DUPLICATE", (Boolean) insertionResult[1]);
3.20 assertEquals("NO ISSUEZILLA ID", 0, insertionResult[2]);
3.21 - sem.acquire();
3.22 + waitLogsParsed();
3.23
3.24 List<Nbuser> usersList = perUtils.getAll(Nbuser.class);
3.25 Nbuser user = usersList.get(0);
3.26 @@ -133,7 +140,7 @@
3.27 assertTrue("THIS ISSUE IS A DUPLICATE", (Boolean) insertionResult[1]);
3.28 assertEquals("DUPLICATE INSERTION", 1, insertionResult[0]);
3.29 assertEquals("NO ISSUEZILLA ID", 0, insertionResult[2]);
3.30 - sem.acquire();
3.31 + waitLogsParsed();
3.32
3.33 Integer nextCount = perUtils.count(Jarfile.class);
3.34 assertEquals("THE NUMBER OF JAR FILES MUST BE THE SAME", count, nextCount);
3.35 @@ -230,7 +237,7 @@
3.36 assertFalse("THIS ISSUE IS NOT ANY DUPLICATE", (Boolean) insertionResult[1]);
3.37 assertEquals("NEW INSERTION NEW ID", 3, insertionResult[0]);
3.38 assertEquals("NO ISSUEZILLA ID", 0, insertionResult[2]);
3.39 - sem.acquire();
3.40 + waitLogsParsed();
3.41
3.42 List<org.netbeans.modules.exceptions.entity.Exceptions> exceptionList = perUtils.getAll(org.netbeans.modules.exceptions.entity.Exceptions.class);
3.43 assertEquals("LIST SIZE", 3, exceptionList.size());
3.44 @@ -243,14 +250,14 @@
3.45 insertionResult = insertion.start();
3.46 assertTrue("THIS ISSUE A DUPLICATE", (Boolean) insertionResult[1]);
3.47 assertEquals("DUPLICATE INSERTION", 3, insertionResult[0]);
3.48 - sem.acquire();
3.49 + waitLogsParsed();
3.50
3.51 insertion = new DbInsertion(rec, thrown, userId, session);
3.52 insertionResult = insertion.start();
3.53 assertTrue("THIS ISSUE A DUPLICATE", (Boolean) insertionResult[1]);
3.54 assertEquals("DUPLICATE INSERTION", 3, insertionResult[0]);
3.55 assertEquals("ISSUEZILLA ID", 10, insertionResult[2]);
3.56 - sem.acquire();
3.57 + waitLogsParsed();
3.58
3.59
3.60 }
4.1 --- a/logger/uihandlerserver/test/org/netbeans/server/uihandler/DuplicatesTest.java Fri Jun 22 02:36:53 2007 +0000
4.2 +++ b/logger/uihandlerserver/test/org/netbeans/server/uihandler/DuplicatesTest.java Fri Jun 22 07:04:52 2007 +0000
4.3 @@ -21,6 +21,7 @@
4.4
4.5 import java.io.File;
4.6 import java.util.Map;
4.7 +import java.util.logging.Level;
4.8 import java.util.logging.LogRecord;
4.9
4.10 /**
4.11 @@ -46,6 +47,12 @@
4.12 protected int timeOut() {
4.13 return 20000;
4.14 }
4.15 +
4.16 + @Override
4.17 + protected Level logLevel() {
4.18 + return Level.FINE;
4.19 + }
4.20 +
4.21
4.22
4.23
5.1 --- a/logger/uihandlerserver/test/org/netbeans/server/uihandler/ExceptionsTest.java Fri Jun 22 02:36:53 2007 +0000
5.2 +++ b/logger/uihandlerserver/test/org/netbeans/server/uihandler/ExceptionsTest.java Fri Jun 22 07:04:52 2007 +0000
5.3 @@ -35,6 +35,13 @@
5.4 public ExceptionsTest(String testName) throws IOException {
5.5 super(testName);
5.6 }
5.7 +
5.8 + @Override
5.9 + protected Level logLevel() {
5.10 + return Level.FINE;
5.11 + }
5.12 +
5.13 +
5.14
5.15 public void testProcess() {
5.16 Exceptions exceptions = new Exceptions();
5.17 @@ -91,11 +98,11 @@
5.18 checkResult("NO METADATA IN REPORT", result, -2, true, false);//not META DATA
5.19 result = exceptions.finishSessionUpload(userId, 1, true, data);
5.20 checkResult("NO THROWN IN REPORT", result, -2, true, false);//not THROWN
5.21 - sem.acquire();
5.22 + waitLogsParsed();
5.23 result = exceptions.finishSessionUpload(userId, 1, true, both);
5.24
5.25 checkResult("THERE SHOULD BE NO DUPLICATE OF THIS ISSUE", result, 1, false, false);//not DUPLICATE
5.26 - sem.acquire();
5.27 + waitLogsParsed();
5.28
5.29 result = exceptions.finishSessionUpload(userId, 1, true, both);// INSERT ONCE MORE
5.30 checkResult("THIS ISSUE SHOULD BE A DUPLICATE OF #1", result, 1, false, true);//duplicate of issue no 1