/** * Global Sensor Networks (GSN) Source Code * Copyright (c) 2006-2016, Ecole Polytechnique Federale de Lausanne (EPFL) * * This file is part of GSN. * * GSN is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * GSN is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GSN. If not, see <http://www.gnu.org/licenses/>. * * File: src/ch/epfl/gsn/TestVSensorLoader.java * * @author Ali Salehi * @author Timotee Maret * */ package ch.epfl.gsn; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import ch.epfl.gsn.Main; import ch.epfl.gsn.VSensorLoader; import ch.epfl.gsn.VirtualSensor; import ch.epfl.gsn.beans.AddressBean; import ch.epfl.gsn.beans.InputStream; import ch.epfl.gsn.beans.StreamSource; import ch.epfl.gsn.beans.VSensorConfig; import ch.epfl.gsn.storage.StorageManager; import ch.epfl.gsn.storage.StorageManagerFactory; import ch.epfl.gsn.wrappers.MockWrapper; public class TestVSensorLoader { private static StorageManager sm = null; @BeforeClass public static void setUpBeforeClass() throws Exception { DriverManager.registerDriver( new org.h2.Driver( ) ); sm = StorageManagerFactory.getInstance( "org.hsqldb.jdbcDriver","sa","" ,"jdbc:hsqldb:mem:.", Main.DEFAULT_MAX_DB_CONNECTIONS); } @AfterClass public static void tearDownAfterClass() throws Exception { } private AddressBean[] addressing= new AddressBean[] {new AddressBean("mock-test")}; @Before public void setUp() throws Exception { Properties p = new Properties(); p.put("mock-test", "ch.epfl.gsn.wrappers.MockWrapper"); p.put("system-time", "ch.epfl.gsn.wrappers.SystemTime"); Main.getInstance(); } @After public void tearDown() throws Exception { } @Test public void testCreateInputStreams() { } @Test public void testPrepareWrapper() throws ClassNotFoundException, InstantiationException, IllegalAccessException { VSensorLoader loader = new VSensorLoader(); MockWrapper wrapper = (MockWrapper) loader.createWrapper(addressing[0]); assertNotNull(wrapper); } @Test public void testPrepareStreamSource() { } @Test public void testStopLoading() throws IOException { VSensorConfig sensorConfig = new VSensorConfig(); sensorConfig.setName("test"); File someFile = File.createTempFile("bla", ".xml"); sensorConfig.setMainClass("ch.epfl.gsn.vsensor.BridgeVirtualSensor"); sensorConfig.setFileName(someFile.getAbsolutePath()); VirtualSensor pool = new VirtualSensor(sensorConfig); InputStream is = new InputStream(); is.setInputStreamName("t1"); is.setQuery("select * from my-stream1"); StreamSource ss1 = new StreamSource().setAlias("my-stream1").setAddressing(new AddressBean[] {new AddressBean("mock-test")}).setSqlQuery("select * from wrapper").setRawHistorySize("2").setInputStream(is); ss1.setSamplingRate(1); assertTrue(ss1.validate()); is.setSources(ss1); assertTrue(is.validate()); sensorConfig.setInputStreams(is); assertTrue(sensorConfig.validate()); } @Test public void testOneInputStreamUsingTwoStreamSources() throws InstantiationException, IllegalAccessException, SQLException { VSensorLoader loader = new VSensorLoader(); InputStream is = new InputStream(); StreamSource ss1 = new StreamSource().setAlias("my-stream1").setAddressing(new AddressBean[] {new AddressBean("mock-test")}).setSqlQuery("select * from wrapper").setRawHistorySize("2").setInputStream(is); ss1.setSamplingRate(1); assertTrue(ss1.validate()); // assertTrue(loader.prepareStreamSource(is,ss1)); StreamSource ss2 = new StreamSource().setAlias("my-stream2").setAddressing(new AddressBean[] {new AddressBean("mock-test")}).setSqlQuery("select * from wrapper").setRawHistorySize("20").setInputStream(is); ss2.setSamplingRate(1); assertTrue(ss2.validate()); // assertTrue(loader.prepareStreamSource(is,ss2)); ss1.getWrapper().releaseResources(); assertFalse(sm.tableExists(ss1.getWrapper().getDBAliasInStr())); } @Test public void testReloadingVirtualSensor() throws InstantiationException, IllegalAccessException, SQLException { VSensorLoader loader = new VSensorLoader(); InputStream is = new InputStream(); StreamSource ss = new StreamSource().setAlias("my-stream1").setAddressing(addressing).setSqlQuery("select * from wrapper").setRawHistorySize("2").setInputStream(is); ss.setSamplingRate(1); assertTrue(ss.validate()); // assertTrue(loader.prepareStreamSource(is,ss)); assertTrue(sm.tableExists(ss.getWrapper().getDBAliasInStr())); assertTrue(sm.tableExists(ss.getUIDStr())); assertFalse(is.getRenamingMapping().isEmpty()); loader.releaseStreamSource(ss); assertTrue(is.getRenamingMapping().isEmpty()); assertFalse(sm.tableExists(ss.getUIDStr())); assertFalse(ss.getWrapper().isActive()); assertFalse(sm.tableExists(ss.getWrapper().getDBAliasInStr())); assertTrue(is.getRenamingMapping().isEmpty()); ss = new StreamSource().setAlias("my-stream1").setAddressing(addressing).setSqlQuery("select * from wrapper").setRawHistorySize("2").setInputStream(is); ss.setSamplingRate(1); // assertTrue(loader.prepareStreamSource(is,ss)); } }