@Test public void testConfigModificationDetection() throws Exception { configFile.setFileContents("adaptor.fullListingSchedule=1\n"); config.setValue("gsa.hostname", "notreal"); config.load(configFile); assertEquals("notreal", config.getGsaHostname()); assertEquals("1", config.getAdaptorFullListingSchedule()); assertEquals(configFile, config.getConfigFile()); final List<ConfigModificationEvent> events = new LinkedList<ConfigModificationEvent>(); ConfigModificationListener listener = new ConfigModificationListener() { @Override public void configModified(ConfigModificationEvent ev) { events.add(ev); } }; configFile.setFileContents("adaptor.fullListingSchedule=2\n"); config.addConfigModificationListener(listener); config.ensureLatestConfigLoaded(); assertEquals("1", config.getAdaptorFullListingSchedule()); assertEquals(0, events.size()); configFile.setLastModified(configFile.lastModified() + 1); config.ensureLatestConfigLoaded(); assertEquals("2", config.getAdaptorFullListingSchedule()); assertEquals("notreal", config.getGsaHostname()); assertEquals(1, events.size()); assertEquals(1, events.get(0).getModifiedKeys().size()); assertTrue(events.get(0).getModifiedKeys().contains("adaptor.fullListingSchedule")); events.clear(); // Change nothing. configFile.setLastModified(configFile.lastModified() + 1); config.ensureLatestConfigLoaded(); assertEquals(0, events.size()); assertEquals("2", config.getAdaptorFullListingSchedule()); assertEquals("notreal", config.getGsaHostname()); config.removeConfigModificationListener(listener); configFile.setFileContents("adaptor.fullListingSchedule=3\n"); configFile.setLastModified(configFile.lastModified() + 1); config.ensureLatestConfigLoaded(); assertEquals(0, events.size()); assertEquals("3", config.getAdaptorFullListingSchedule()); assertEquals("notreal", config.getGsaHostname()); }
// TODO(ejona): Enable test once config allows gsa.hostname changes. // **DISABLED** @Test public void testConfigModifiedInvalid() throws Exception { configFile.setFileContents("gsa.hostname=notreal\n"); config.load(configFile); assertEquals("notreal", config.getGsaHostname()); // Missing gsa.hostname. configFile.setFileContents(""); configFile.setLastModified(configFile.lastModified() + 1); boolean threwException = false; try { config.ensureLatestConfigLoaded(); } catch (IllegalStateException e) { threwException = true; } assertTrue(threwException); assertEquals("notreal", config.getGsaHostname()); }
static HttpServer createHttpServer(Config config) throws IOException { HttpServer server; if (!config.isServerSecure()) { server = HttpServer.create(); } else { server = HttpsServer.create(); try { HttpsConfigurator httpsConf = new HttpsConfigurator(SSLContext.getDefault()) { public void configure(HttpsParameters params) { SSLParameters sslParams = getSSLContext().getDefaultSSLParameters(); // Allow verifying the GSA and other trusted computers. sslParams.setWantClientAuth(true); params.setSSLParameters(sslParams); } }; ((HttpsServer) server).setHttpsConfigurator(httpsConf); } catch (java.security.NoSuchAlgorithmException ex) { throw new RuntimeException(ex); } } int maxThreads = config.getServerMaxWorkerThreads(); int queueCapacity = config.getServerQueueCapacity(); BlockingQueue<Runnable> blockingQueue = new ArrayBlockingQueue<Runnable>(queueCapacity); // The Executor can't reject jobs directly, because HttpServer does not // appear to handle that case. RejectedExecutionHandler policy = new SuggestHandlerAbortPolicy(HttpExchanges.abortImmediately); Executor executor = new ThreadPoolExecutor(maxThreads, maxThreads, 1, TimeUnit.MINUTES, blockingQueue, policy); server.setExecutor(executor); try { server.bind(new InetSocketAddress(config.getServerPort()), 0); } catch (BindException ex) { log.log(Level.WARNING, "Server port {0,number,#} is in use.", config.getServerPort()); throw ex; } log.info("GSA host name: " + config.getGsaHostname()); log.info("server is listening on port #" + server.getAddress().getPort()); return server; }
public void testNoAdminHostname() throws Exception { configFile.setFileContents("gsa.hostname=feedhost\n"); config.load(configFile); assertEquals(config.getGsaHostname(), config.getGsaAdminHostname()); }