1 19 20 package org.netbeans.server.uihandler; 21 22 import org.netbeans.server.uihandler.statistics.DbInsertion; 23 import java.awt.EventQueue ; 24 import java.io.InputStreamReader ; 25 import java.sql.ResultSet ; 26 import java.sql.SQLException ; 27 import java.sql.Statement ; 28 import java.util.Arrays ; 29 import java.util.List ; 30 import java.util.logging.Level ; 31 import java.util.logging.LogRecord ; 32 import org.netbeans.junit.NbTestCase; 33 import org.netbeans.server.componentsmatch.Matcher; 34 35 39 public class DbInsertionTest extends NbTestCase { 40 41 public DbInsertionTest(String testName) { 42 super(testName); 43 } 44 45 protected void setUp() throws Exception { 46 super.setUp(); 47 clearWorkDir(); 48 setUpTestingDB(getWorkDirPath()); 49 } 50 51 protected void tearDown() throws Exception { 52 super.tearDown(); 53 Utils.closeConnection(); 54 } 55 56 protected Level logLevel() { 57 return Level.INFO; 58 } 59 60 61 public void testRun() throws Exception { 62 LogRecord rec= new LogRecord (Level.SEVERE, "TESTING LOG RECORD"); 63 String [] users = {"userName", "SECOND USER"}; 64 String [] comments = {"COMMENT", "SECOND COMMENT"}; 65 String [] params = new String [6]; 66 params[0] = "Linux, 2.6.15-1.2054_FC5smp, i386"; 67 params[1] = "Java HotSpot(TM) Client VM, 1.6.0-b105"; 68 params[2] = "NetBeans IDE Dev (Build 200702121900)"; 69 params[3] = users[0]; 70 params[4] = "UnknownError : Summary Message"; 71 params[5] = comments[0]; 72 rec.setParameters(params); 73 Throwable thrown = new NullPointerException ("TESTING NULL POINTER"); 74 String fileName = "file"; 75 DbInsertion insertion = new DbInsertion(rec, thrown, fileName); 76 EventQueue.invokeAndWait(insertion); 77 Statement statement = Utils.getConnection().createStatement(); 78 ResultSet result = statement.executeQuery("SELECT * FROM NBUSER"); 79 assertTrue("THERE MUST BE ONE USER", result.next()); 80 assertEquals("USER NAME CHECK", result.getString(2), params[3]); 81 assertFalse("THERE SHOUND NOT BE MORE USERS", result.next()); 82 result.close(); 83 result = statement.executeQuery("SELECT * FROM ISSUE"); 84 assertTrue("THERE MUST BE ONE ISSUE", result.next()); 85 assertEquals("USER NAME CHECK", result.getString(2), params[4]); 86 assertEquals("VM MACHINE CHECK", result.getString(3), params[1]); 87 assertEquals("NB BUILD NUMBER CHECK", result.getString(4), params[2]); 88 assertEquals("OPERATING SYSTEM NAME CHECK", result.getString(8), params[0]); 89 assertFalse("THERE SHOUND NOT BE MORE ISSUES", result.next()); 90 result.close(); 91 result = statement.executeQuery("SELECT * FROM LINE"); 92 assertTrue("THERE MUST BE ONE ISSUE", result.next()); 93 List <StackTraceElement > list = Arrays.asList(thrown.getStackTrace()); 94 int i=0; 95 do{ 96 i++; 97 int lineOrder = result.getInt(4); 98 int lineNumber = result.getInt(3); 99 int stackLineNumber = list.get(lineOrder).getLineNumber(); 100 if (stackLineNumber < 0) stackLineNumber = 0; 101 assertEquals(lineNumber, stackLineNumber); 102 }while (result.next()); 103 assertEquals(i, list.size()); 104 params[3] = users[1]; 106 params[5] = comments[1]; 107 rec.setParameters(params); 108 insertion = new DbInsertion(rec, thrown, fileName); 109 EventQueue.invokeAndWait(insertion); 110 result = statement.executeQuery("SELECT * FROM NBUSER"); 111 assertTrue("THERE SHOULD BE TWO USERS", result.next()); 112 assertEquals(users[result.getInt(1)-1], result.getString(2)); 113 assertTrue("THERE SHOULD BE TWO USERS", result.next()); 114 assertEquals(users[result.getInt(1)-1], result.getString(2)); 115 assertFalse("THERE SHOULD BE TWO USERS", result.next()); 116 result.close(); 117 result = statement.executeQuery("SELECT * FROM COMMENT"); 118 119 assertTrue("THERE SHOULD BE TWO USERS", result.next()); 120 int issueId = result.getInt(2); 121 assertEquals(comments[result.getInt(3)-1],result.getString(4)); 122 assertEquals("file", result.getString(5)); 123 assertTrue("THERE SHOULD BE TWO USERS", result.next()); 124 assertEquals(comments[result.getInt(3)-1],result.getString(4)); 125 assertEquals(issueId, result.getInt(2)); assertEquals("file", result.getString(5)); assertFalse("THERE SHOULD BE TWO USERS", result.next()); 128 result.close(); 129 130 statement.close(); 131 } 132 133 134 135 public static void setUpTestingDB(String workpath) throws Exception { 136 String driveName = "org.apache.derby.jdbc.EmbeddedDriver"; 137 String dbURL = "jdbc:derby:"+workpath+"/exceptions_test;create=true"; 138 Class.forName(driveName); 139 Utils.setConnection(dbURL, "app", "app"); 140 Matcher.read(new InputStreamReader (Matcher.class.getResourceAsStream("componentmapping.txt"))); 141 createTestDB(); 142 } 143 144 private static void createTestDB() throws SQLException { 145 Statement statement = Utils.getConnection().createStatement(); 146 statement.execute("CREATE TABLE Method(Id int PRIMARY KEY, Name varchar(100))"); 147 statement.execute("CREATE TABLE NbUser(Id int PRIMARY KEY,Name varchar(30))"); 148 statement.execute("CREATE TABLE StackTrace(Id int PRIMARY KEY, Message varchar(100), Class varchar(100), Annotation int)"); 149 150 statement.execute("CREATE TABLE Issue(Id int PRIMARY KEY,Summary varchar(200)," + 151 "VM varchar(50), ProductVersion varchar(50), Component varchar(50), Subcomponent varchar(50)," + 152 "AssignTo varchar(50),OperatingSystem varchar(50), IssueZillaId int)"); 153 154 statement.execute("CREATE TABLE IssueNbUser(Issue_id int REFERENCES Issue(Id)," + 155 "NbUser_id int REFERENCES NbUser(Id),ReportDate TimeStamp,PRIMARY KEY (Issue_id, NbUser_id))"); 156 157 statement.execute("CREATE TABLE Comment(Id int, Issue_id int REFERENCES Issue(Id)," + 158 "NbUser_id int REFERENCES NbUser(Id),Comment varchar(255),LoggerName varchar(30)," + 159 "PRIMARY KEY (Id, Issue_id))"); 160 161 statement.execute("CREATE TABLE Line(StackTrace_Id int, " + 162 "Method_id int, LineNumber int, Line_Order int,PRIMARY KEY (StackTrace_Id, LineNumber, Method_id, Line_Order)," + 163 "FOREIGN KEY (StackTrace_Id) REFERENCES StackTrace(Id),FOREIGN KEY (Method_id) REFERENCES Method(Id))"); 164 165 statement.execute("CREATE TABLE HASHCODES(CODE int,IssueId int PRIMARY KEY," + 166 "FOREIGN KEY (IssueId) REFERENCES Issue(Id))"); 167 statement.close(); 168 Utils.getConnection().commit(); 169 } 170 171 } 172 | Popular Tags |