/* * Copyright 2012 NGDATA nv * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.lilyproject.solrtestfw.test; import static org.junit.Assert.fail; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import org.junit.Test; import org.lilyproject.solrtestfw.SolrDefinition; import org.lilyproject.solrtestfw.SolrProxy; public class SolrProxyTest { @Test public void testDynamicallyChangingNumberOfCores() throws Exception { SolrProxy solr = new SolrProxy(); solr.start(); testSolrCore("core0", 200); testSolrCore("core1", 404); // Increase number of cores solr.changeSolrDefinition(new SolrDefinition( SolrDefinition.core("core0"), SolrDefinition.core("core1") )); testSolrCore("core0", 200); testSolrCore("core1", 200); testSolrCore("core2", 404); // Reduce number of cores solr.changeSolrDefinition(new SolrDefinition( SolrDefinition.core("core0") )); testSolrCore("core0", 200); testSolrCore("core1", 404); // Increase number of cores again solr.changeSolrDefinition(new SolrDefinition( SolrDefinition.core("core0"), SolrDefinition.core("core1"), SolrDefinition.core("core2") )); testSolrCore("core0", 200); testSolrCore("core1", 200); testSolrCore("core2", 200); testSolrCore("core3", 404); solr.stop(); } @Test public void testNoCore0() throws Exception { SolrProxy solr = new SolrProxy(); solr.start(); solr.changeSolrDefinition(new SolrDefinition( SolrDefinition.core("first"), SolrDefinition.core("second") )); // Even when not specified, there is always the core0 core testSolrCore("core0", 200); testSolrCore("first", 200); testSolrCore("second", 200); solr.stop(); } private void testSolrCore(String coreName, int expectedStatus) throws IOException { String urlString = "http://localhost:8983/solr/" + coreName + "/select?q=*:*"; HttpURLConnection conn = performRequest(urlString); if (conn.getResponseCode() != expectedStatus) { fail("Testing core " + coreName + ": expected status " + expectedStatus + " but got: " + conn.getResponseCode() + ": " + conn.getResponseMessage()); } } private HttpURLConnection performRequest(String urlString) throws IOException { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect(); conn.disconnect(); return conn; } }