Using different semantics for locking and fixing hidden null pointer exception in tests update_of_anna_on_20070710_root
authorjtulach@netbeans.org
Fri, 22 Jun 2007 07:04:52 +0000
changeset 2358d653169bd4da
parent 2357 1d04a609020b
child 2359 4ddfc380d820
Using different semantics for locking and fixing hidden null pointer exception in tests
logger/uihandlerserver/src/java/org/netbeans/server/uihandler/statistics/Actions.java
logger/uihandlerserver/test/org/netbeans/server/uihandler/DatabaseTestCase.java
logger/uihandlerserver/test/org/netbeans/server/uihandler/DbInsertionTest.java
logger/uihandlerserver/test/org/netbeans/server/uihandler/DuplicatesTest.java
logger/uihandlerserver/test/org/netbeans/server/uihandler/ExceptionsTest.java
     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