KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > server > uihandler > DbInsertionTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.server.uihandler;
21
22 import org.netbeans.server.uihandler.statistics.DbInsertion;
23 import java.awt.EventQueue JavaDoc;
24 import java.io.InputStreamReader JavaDoc;
25 import java.sql.ResultSet JavaDoc;
26 import java.sql.SQLException JavaDoc;
27 import java.sql.Statement JavaDoc;
28 import java.util.Arrays JavaDoc;
29 import java.util.List JavaDoc;
30 import java.util.logging.Level JavaDoc;
31 import java.util.logging.LogRecord JavaDoc;
32 import org.netbeans.junit.NbTestCase;
33 import org.netbeans.server.componentsmatch.Matcher;
34
35 /**
36  *
37  * @author jindra
38  */

39 public class DbInsertionTest extends NbTestCase {
40     
41     public DbInsertionTest(String JavaDoc testName) {
42         super(testName);
43     }
44     
45     protected void setUp() throws Exception JavaDoc {
46         super.setUp();
47         clearWorkDir();
48         setUpTestingDB(getWorkDirPath());
49     }
50     
51     protected void tearDown() throws Exception JavaDoc {
52         super.tearDown();
53         Utils.closeConnection();
54     }
55     
56     protected Level JavaDoc logLevel() {
57         return Level.INFO;
58     }
59     
60     
61     public void testRun() throws Exception JavaDoc {
62         LogRecord JavaDoc rec= new LogRecord JavaDoc(Level.SEVERE, "TESTING LOG RECORD");
63         String JavaDoc[] users = {"userName", "SECOND USER"};
64         String JavaDoc[] comments = {"COMMENT", "SECOND COMMENT"};
65         String JavaDoc[] params = new String JavaDoc[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 JavaDoc thrown = new NullPointerException JavaDoc("TESTING NULL POINTER");
74         String JavaDoc fileName = "file";
75         DbInsertion insertion = new DbInsertion(rec, thrown, fileName);
76         EventQueue.invokeAndWait(insertion);
77         Statement JavaDoc statement = Utils.getConnection().createStatement();
78         ResultSet JavaDoc 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 JavaDoc<StackTraceElement JavaDoc> 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         //********* ADD DUPLICATE *********/
105
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));// the same issue
126
assertEquals("file", result.getString(5));// the same logg
127
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 JavaDoc workpath) throws Exception JavaDoc{
136         String JavaDoc driveName = "org.apache.derby.jdbc.EmbeddedDriver";
137         String JavaDoc dbURL = "jdbc:derby:"+workpath+"/exceptions_test;create=true";
138         Class.forName(driveName);
139         Utils.setConnection(dbURL, "app", "app");
140         Matcher.read(new InputStreamReader JavaDoc(Matcher.class.getResourceAsStream("componentmapping.txt")));
141         createTestDB();
142     }
143     
144     private static void createTestDB() throws SQLException JavaDoc {
145         Statement JavaDoc 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