1 19 20 package org.netbeans.server.uihandler; 21 22 import java.io.BufferedOutputStream ; 23 import java.io.File ; 24 import java.io.FileOutputStream ; 25 import java.io.IOException ; 26 import java.io.InputStream ; 27 import java.io.OutputStream ; 28 import java.util.Collections ; 29 import java.util.Map ; 30 import java.util.concurrent.ExecutionException ; 31 import java.util.logging.Level ; 32 import org.netbeans.junit.Log; 33 import org.netbeans.junit.NbTestCase; 34 import org.netbeans.lib.uihandler.InputGesture; 35 import org.netbeans.server.uihandler.StatisticsTest.PgCnt; 36 37 41 public class LogsManagerTest extends NbTestCase { 42 private LogsManager result; 43 private File logs; 44 45 46 public LogsManagerTest(String testName) { 47 super(testName); 48 } 49 50 @Override 51 protected Level logLevel() { 52 return Level.FINE; 53 } 54 55 private File logs() throws IOException { 56 File f = new File (getWorkDir(), "logs"); 57 f.mkdirs(); 58 return f; 59 } 60 61 62 protected void setUp() throws Exception { 63 clearWorkDir(); 64 65 File toDir = logs(); 66 File log = extractResourceAs(toDir, "1.log", "log444"); 67 File log2 = extractResourceAs(toDir, "2.log", "log4442"); 68 69 result = LogsManager.createManager(logs()); 70 } 71 72 protected void tearDown() throws Exception { 73 } 74 75 public void testGetDefaultWhenNoPropsAreSet() throws Exception { 76 CharSequence log = Log.enable("org.netbeans.server.uihandler", Level.WARNING); 77 LogsManager l = LogsManager.getDefault(); 78 assertNotNull("Always returns something even no props are set", l); 79 if (log.toString().indexOf("env") == -1) { 80 fail("There should be a warning about env variables:\n" + log); 81 } 82 83 assertEquals("-1 indicates problems", -1, l.getNumberOfLogs()); 84 } 85 86 87 public void testGetDefault() throws Exception { 88 doCountsTest(0); 89 } 90 public void testUserInc() throws Exception { 91 doCountsTest(1); 92 } 93 public void testUserSessionChange() throws Exception { 94 doCountsTest(2); 95 } 96 97 private void doCountsTest(int type) throws Exception { 98 assertNotNull(result); 99 100 101 Map <InputGesture,Integer > cnts = null; 102 switch (type) { 103 case 0: cnts = getGlobalCounts(result); break; 104 case 1: cnts = getUserCounts(result, "log444"); break; 105 case 2: cnts = Collections.emptyMap(); 106 } 107 108 assertNotNull(cnts); 109 110 for (Map.Entry <InputGesture,Integer > e : cnts.entrySet()) { 111 if (e.getValue() <= 0) { 112 fail("Too less of " + e.getKey() + " = " + e.getValue()); 113 } 114 } 115 int numb = result.getNumberOfLogs(); 116 117 File log = extractResourceAs(logs(), "1.log", "log444.1"); 118 result.addLog(log); 119 120 Map <InputGesture,Integer > newCnts = null; 121 switch (type) { 122 case 0: newCnts = getGlobalCounts(result); break; 123 case 1: newCnts = getUserCounts(result, "log444"); break; 124 case 2: newCnts = getLastSessionCounts(result, "log444"); break; 125 } 126 assertEquals("One log added", numb + 1, result.getNumberOfLogs()); 127 128 for (Map.Entry <InputGesture,Integer > e : cnts.entrySet()) { 129 Integer newValue = newCnts.get(e.getKey()); 130 if (e.getValue() >= newValue) { 131 fail("Too small increment of of " + e.getKey() + " = " + e.getValue() + " and " + newValue); 132 } 133 } 134 } 135 136 static File extractResource(File toDir, String res) throws IOException { 137 return extractResourceAs(toDir, res, res); 138 } 139 140 static File extractResourceAs(File toDir, String res, String outFile) throws IOException { 141 InputStream is = LogsManagerTest.class.getResourceAsStream(res); 142 File out = new File (toDir, outFile); 143 OutputStream os = new BufferedOutputStream (new FileOutputStream (out)); 144 byte[] arr = new byte[4096]; 145 for (;;) { 146 int len = is.read(arr); 147 if (-1 == len) break; 148 os.write(arr, 0, len); 149 } 150 os.close(); 151 is.close(); 152 return out; 153 } 154 155 @SuppressWarnings ("unchecked") 156 private static Map <InputGesture,Integer > getGlobalCounts(LogsManager result) throws InterruptedException , ExecutionException { 157 PgCnt page = new PgCnt(); 158 result.preparePageContext(page, null); 159 return (Map <InputGesture, Integer >) page.getAttribute("globalGestures"); 160 } 161 @SuppressWarnings ("unchecked") 162 private static Map <InputGesture,Integer > getUserCounts(LogsManager result, String id) throws InterruptedException , ExecutionException { 163 PgCnt page = new PgCnt(); 164 result.preparePageContext(page, id); 165 return (Map <InputGesture, Integer >) page.getAttribute("userGestures"); 166 } 167 @SuppressWarnings ("unchecked") 168 private static Map <InputGesture,Integer > getLastSessionCounts(LogsManager result, String id) throws InterruptedException , ExecutionException { 169 PgCnt page = new PgCnt(); 170 result.preparePageContext(page, id); 171 return (Map <InputGesture, Integer >) page.getAttribute("lastGestures"); 172 } 173 } 174 | Popular Tags |