/*
* Copyright (C) 2012, Katy Hilgenberg.
* Special acknowledgments to: Knowledge & Data Engineering Group, University of Kassel (http://www.kde.cs.uni-kassel.de).
* Contact: sdcf@cs.uni-kassel.de
*
* This file is part of the SDCFramework (Sensor Data Collection Framework) project.
*
* The SDCFramework is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The SDCFramework 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the SDCFramework. If not, see <http://www.gnu.org/licenses/>.
*/
package de.unikassel.android.sdcframework.data.tests;
import java.util.ArrayList;
import java.util.List;
import de.unikassel.android.sdcframework.data.SDCConfiguration;
import de.unikassel.android.sdcframework.data.SensorConfigurationEntry;
import de.unikassel.android.sdcframework.data.TimeProviderConfigurationEntries;
import de.unikassel.android.sdcframework.data.independent.GlobalSerializer;
import de.unikassel.android.sdcframework.devices.facade.SensorDeviceIdentifier;
import de.unikassel.android.sdcframework.devices.facade.SensorDevicePriorities;
import de.unikassel.android.sdcframework.persistence.facade.DBFullStrategyDescription;
import de.unikassel.android.sdcframework.util.facade.TimeProviderErrorStrategyDescription;
import junit.framework.TestCase;
/**
* Tests for the SDCConfiguration, the SensorConfigurationEntry, the
* TransmissionConfigurationEntry and the DatabaseConfigurationEntry classes.
*
* @author Katy Hilgenberg
*
*/
public class TestSDCConfiguration extends TestCase
{
/**
* Test method for construction, setter and getter.
*/
public final void testSDCConfigurationEntries()
{
// test sensor configuration entry
SensorConfigurationEntry entry = new SensorConfigurationEntry();
assertNull( "Expected sensor id is null initially", entry.getSensorID() );
assertNull( "Expected priority is null initially", entry.getPriority() );
assertEquals( "Expected frequency is 0 initially", 0, entry.getFrequency() );
assertFalse( "Expected enabled is false initially", entry.getEnabled() );
entry.setSensorID( SensorDeviceIdentifier.Accelerometer.toString() );
assertEquals( "Expected sensor id set",
SensorDeviceIdentifier.Accelerometer.toString(), entry.getSensorID() );
entry.setPriority( SensorDevicePriorities.Level2.toString() );
assertEquals( "Expected priority set",
SensorDevicePriorities.Level2.toString(), entry.getPriority() );
entry.setFrequency( 100000 );
assertEquals( "Expected frequency set", 100000, entry.getFrequency() );
entry.setEnabled( true );
assertTrue( "Expected enabled set to true", entry.getEnabled() );
// test sdc configuration
SDCConfiguration config = new SDCConfiguration();
assertNull( "Expected flag for broadcasting samples is null initially",
config.isBroadcastingSamples() );
config.setBroadcastingSamples( true );
assertTrue( "Expected flag for broadcasting samples set",
config.isBroadcastingSamples() );
assertNull( "Expected broadcast frequency is null initially",
config.getBroadcastFrequency() );
long broadcastFrequency = 77L;
config.setBroadcastFrequency( broadcastFrequency );
assertEquals( "Expected broadcast frequency set", broadcastFrequency,
config.getBroadcastFrequency().longValue() );
assertNull( "Expected flag for sampling is null initially",
config.isSamplingEnabled() );
config.setIsSamplingEnabled( true );
assertTrue( "Expected flag for sampling set",
config.isSamplingEnabled() );
assertNull(
"Expected flag for persistent storage of samples is null initially",
config.isStoringSamples() );
config.setStoringSamples( true );
assertTrue( "Expected flag for persistent storage of samples set",
config.isStoringSamples() );
assertNull( "Expected flag for transmission of samples is null initially",
config.isTransmittingSamples() );
config.setTransmittingSamples( true );
assertTrue( "Expected flag for transmission of samples set",
config.isTransmittingSamples() );
assertNotNull( "Expected list initialized",
config.getListSensorConfigurations() );
assertNull( "Expected maximum db size is null initially",
config.getDatabaseConfiguration().getMaxDBSize() );
Long maxDBSize = 4711L;
config.getDatabaseConfiguration().setMaxDBSize( maxDBSize );
assertEquals( "Expected maximum db size set", maxDBSize,
config.getDatabaseConfiguration().getMaxDBSize() );
// test time provider configuration entries
assertNull( "Expected time provider entries not null initially",
config.getTimeProviderConfigEntries() );
config.setTimeProviderConfigEntries( new TimeProviderConfigurationEntries() );
TimeProviderConfigurationEntries timeProviderEntries =
config.getTimeProviderConfigEntries();
assertNotNull( "Expected time providers list initiallized",
timeProviderEntries.getProviders() );
List< String > listProviders = new ArrayList< String >();
listProviders.add( "ptbtime1.ptb.de" );
listProviders.add( "ptbtime2.ptb.de" );
listProviders.add( "atom.uhr.de" );
timeProviderEntries.setProviders( listProviders );
assertSame(
"Expected list of providers set",
listProviders,
timeProviderEntries.getProviders() );
TimeProviderErrorStrategyDescription strategy =
TimeProviderErrorStrategyDescription.IgnoreAndObserveSyncStates;
timeProviderEntries.setErrorStrategy( strategy.name() );
assertEquals(
"Expected error staretgy set set",
strategy.name(), timeProviderEntries.getErrorStrategy() );
// test database configuration entry
assertNull(
"Expected flag for database full sample deletion is null initially",
config.getDatabaseConfiguration().isDBFullDeletionPriorityBased() );
config.getDatabaseConfiguration().setDBFullDeletionPriorityBased( true );
assertTrue(
"Expected flag for database full sample deletion is done priority based set",
config.getDatabaseConfiguration().isDBFullDeletionPriorityBased() );
assertNull(
"Expected record count to delete in case of database full is null initially",
config.getDatabaseConfiguration().getDBFullDeletionRecordCount() );
Integer dbFullDeletionRecordCount = 1000;
config.getDatabaseConfiguration().setDBFullDeletionRecordCount(
dbFullDeletionRecordCount );
assertEquals(
"Expected record count to delete in case of database full is set",
dbFullDeletionRecordCount,
config.getDatabaseConfiguration().getDBFullDeletionRecordCount() );
assertNull(
"Expected time to wait in case of database full is null initially",
config.getDatabaseConfiguration().getDBFullWaitTime() );
Long dbFullWaitTime = 445L;
config.getDatabaseConfiguration().setDBFullWaitTime( dbFullWaitTime );
assertEquals(
"Expected time to wait in case of database full is set",
dbFullWaitTime, config.getDatabaseConfiguration().getDBFullWaitTime() );
assertNull(
"Expected strategy definition in case of database full is null initially",
config.getDatabaseConfiguration().getDBFullStrategy() );
String dbFullStrategy =
DBFullStrategyDescription.WAIT_DELETE_NOTIFY.toString();
config.getDatabaseConfiguration().setDBFullStrategy( dbFullStrategy );
assertEquals(
"Expected strategy definition in case of database full is not set",
dbFullStrategy, config.getDatabaseConfiguration().getDBFullStrategy() );
// test transmission configuration entry
assertNull(
"Expected minimum of samples to transfer is null initially",
config.getTransmissionConfiguration().getMinSampleTransferCount() );
Integer minSampleTransferCount = 12;
config.getTransmissionConfiguration().setMinSampleTransferCount(
minSampleTransferCount );
assertEquals(
"Expected minimum of samples to transfer is set",
minSampleTransferCount,
config.getTransmissionConfiguration().getMinSampleTransferCount() );
assertNull(
"Expected maximum of samples to transfer is null initially",
config.getTransmissionConfiguration().getMaxSampleTransferCount() );
Integer maxSampleTransferCount = 33;
config.getTransmissionConfiguration().setMaxSampleTransferCount(
maxSampleTransferCount );
assertEquals(
"Expected maximum of samples to transfer is set",
maxSampleTransferCount,
config.getTransmissionConfiguration().getMaxSampleTransferCount() );
assertNull(
"Expected minimum transfer frequency is null initially",
config.getTransmissionConfiguration().getMinTransferFrequency() );
Long minTransferFrequency = 7000L;
config.getTransmissionConfiguration().setMinTransferFrequency(
minTransferFrequency );
assertEquals(
"Expected minimum transfer frequency is set",
minTransferFrequency,
config.getTransmissionConfiguration().getMinTransferFrequency() );
assertNotNull( "Expected protocol config is not null initially",
config.getTransmissionConfiguration().getProtocolConfig() );
assertNull( "Expected URL is null initially",
config.getTransmissionConfiguration().getProtocolConfig().getURL() );
String remoteIP = "http://192.168.0.13";
config.getTransmissionConfiguration().getProtocolConfig().setURL( remoteIP );
assertEquals(
"Expected URL is set",
remoteIP,
config.getTransmissionConfiguration().getProtocolConfig().getURL() );
assertNull( "Expected user name is default",
config.getTransmissionConfiguration().getProtocolConfig().getUserName() );
String userName = "me";
config.getTransmissionConfiguration().getProtocolConfig().setUserName(
userName );
assertEquals(
"Expected user name is set",
userName,
config.getTransmissionConfiguration().getProtocolConfig().getUserName() );
assertNull(
"Expected password is default",
config.getTransmissionConfiguration().getProtocolConfig().getAuthPassword() );
String authPassword = "secret";
config.getTransmissionConfiguration().getProtocolConfig().setAuthPassword(
authPassword );
assertEquals(
"Expected password is set",
authPassword,
config.getTransmissionConfiguration().getProtocolConfig().getAuthPassword() );
assertNull( "Expected archive type is default",
config.getTransmissionConfiguration().getArchiveType() );
String archiveType = "zip";
config.getTransmissionConfiguration().setArchiveType( archiveType );
assertEquals(
"Expected archive type is set",
archiveType, config.getTransmissionConfiguration().getArchiveType() );
assertNull(
"Expected connection strategy description is default",
config.getTransmissionConfiguration().getProtocolConfig().getConnectionStrategy() );
String connectionStrategy = "????";
config.getTransmissionConfiguration().getProtocolConfig().setConnectionStrategy(
connectionStrategy );
assertEquals(
"Expected connection strategy description is set",
connectionStrategy,
config.getTransmissionConfiguration().getProtocolConfig().getConnectionStrategy() );
}
/**
* Test method for serialization.
*/
public final void testSerialization()
{
SDCConfiguration config = new SDCConfiguration();
// test for empty collection
try
{
// serialize to xml
String xml = config.toXML();
System.out.println( xml );
// serialize a new object from xml to object
SDCConfiguration config2 =
GlobalSerializer.fromXML( SDCConfiguration.class, xml );
assertTrue(
"Expected object serialized from string equal to the original source",
config2.getListSensorConfigurations().isEmpty() );
}
catch ( Exception e )
{
e.printStackTrace();
fail( "Unexpected exception during serialization" );
}
// add sensor entries
SensorConfigurationEntry entry = new SensorConfigurationEntry();
entry.setSensorID( SensorDeviceIdentifier.Accelerometer.toString() );
entry.setEnabled( true );
entry.setFrequency( 1000 );
config.getListSensorConfigurations().add( entry );
entry = new SensorConfigurationEntry();
entry.setSensorID( SensorDeviceIdentifier.GPS.toString() );
entry.setEnabled( false );
entry.setFrequency( 60000 );
entry.setPriority( SensorDevicePriorities.Level0.toString() );
config.getListSensorConfigurations().add( entry );
entry = new SensorConfigurationEntry();
entry.setSensorID( SensorDeviceIdentifier.Wifi.toString() );
entry.setEnabled( true );
entry.setFrequency( 60000 );
entry.setPriority( SensorDevicePriorities.Level1.toString() );
config.getListSensorConfigurations().add( entry );
// add common service configuration
config.setBroadcastingSamples( true );
config.setBroadcastFrequency( 4711L );
config.setIsSamplingEnabled( false );
config.setStoringSamples( true );
config.setTransmittingSamples( true );
// add time provider configuration entries
List< String > listProviders = new ArrayList< String >();
listProviders.add( "ptbtime1.ptb.de" );
listProviders.add( "ptbtime2.ptb.de" );
listProviders.add( "atom.uhr.de" );
TimeProviderErrorStrategyDescription strategy =
TimeProviderErrorStrategyDescription.IgnoreAndObserveSyncStates;
config.setTimeProviderConfigEntries( new TimeProviderConfigurationEntries() );
config.getTimeProviderConfigEntries().setProviders( listProviders );
config.getTimeProviderConfigEntries().setErrorStrategy( strategy.name() );
// add database configuration
config.getDatabaseConfiguration().setMaxDBSize( 10485760L );
config.getDatabaseConfiguration().setDBFullDeletionPriorityBased( true );
config.getDatabaseConfiguration().setDBFullDeletionRecordCount( 1000 );
config.getDatabaseConfiguration().setDBFullWaitTime( 10000L );
config.getDatabaseConfiguration().setDBFullStrategy(
DBFullStrategyDescription.WAIT_NOTIFY_STOPSERVICE.toString() );
// add transmission configuration
config.getTransmissionConfiguration().setMinSampleTransferCount( 44 );
config.getTransmissionConfiguration().setMaxSampleTransferCount( 1500 );
config.getTransmissionConfiguration().setMinTransferFrequency( 60000L );
config.getTransmissionConfiguration().setArchiveType( "jar" );
config.getTransmissionConfiguration().getProtocolConfig().setUserName(
"name" );
config.getTransmissionConfiguration().getProtocolConfig().setAuthPassword(
"omg" );
config.getTransmissionConfiguration().getProtocolConfig().setURL(
"http://heise.de" );
config.getTransmissionConfiguration().getProtocolConfig().setConnectionStrategy(
"do nothing" );
try
{
// serialize to xml
String xml = config.toXML();
System.out.println( xml );
// serialize a new object from xml
SDCConfiguration config2 =
GlobalSerializer.fromXML( SDCConfiguration.class, xml );
assertEquals( "Expected same list size",
config.getListSensorConfigurations().size(),
config2.getListSensorConfigurations().size() );
// test device settings
for ( int i = 0; i < config.getListSensorConfigurations().size(); ++i )
{
SensorConfigurationEntry orgEntry =
config.getListSensorConfigurations().get( i );
SensorConfigurationEntry newEntry =
config2.getListSensorConfigurations().get( i );
assertEquals( "Expected same sensor id",
orgEntry.getSensorID(), newEntry.getSensorID() );
assertEquals( "Expected same frequency",
orgEntry.getFrequency(), newEntry.getFrequency() );
assertEquals( "Expected same enabled state",
orgEntry.getEnabled(), newEntry.getEnabled() );
assertEquals( "Expected same priority state",
orgEntry.getPriority(), newEntry.getPriority() );
}
// test service settings
assertTrue( "Expected broadcasting of samples enabled",
config2.isBroadcastingSamples() );
assertEquals( "Unxpected broadcastfrequency", config.getBroadcastFrequency(),
config2.getBroadcastFrequency() );
assertFalse( "Expected sampling disbled",
config2.isSamplingEnabled() );
assertTrue( "Expected persistent storing of samples enabled",
config2.isStoringSamples() );
assertTrue( "Expected transmission of samples enabled",
config2.isTransmittingSamples() );
// test time provider settings
List< String > eventProviders =
config2.getTimeProviderConfigEntries().getProviders();
assertEquals( "Unexpected provider count", listProviders.size(),
eventProviders.size() );
for ( String provider : listProviders )
{
assertTrue( "Expected provider in list " + provider,
eventProviders.contains( provider ) );
}
assertEquals( "Unexpected error strategy", strategy.name(),
config2.getTimeProviderConfigEntries().getErrorStrategy() );
// test database settings
assertEquals( "Expected database size set",
config.getDatabaseConfiguration().getMaxDBSize(),
config2.getDatabaseConfiguration().getMaxDBSize() );
assertEquals(
"Unexpected value for database full deletion done priority based flag",
config.getDatabaseConfiguration().isDBFullDeletionPriorityBased(),
config2.getDatabaseConfiguration().isDBFullDeletionPriorityBased() );
assertEquals( "Unexpected value for deletion record count",
config.getDatabaseConfiguration().getDBFullDeletionRecordCount(),
config2.getDatabaseConfiguration().getDBFullDeletionRecordCount() );
assertEquals( "Unexpected value for wait time",
config.getDatabaseConfiguration().getDBFullWaitTime(),
config2.getDatabaseConfiguration().getDBFullWaitTime() );
assertEquals( "Unexpected value for database full strategy",
config.getDatabaseConfiguration().getDBFullStrategy(),
config2.getDatabaseConfiguration().getDBFullStrategy() );
assertEquals( "Unexpected value for minimum sample transfer count",
config.getTransmissionConfiguration().getMinSampleTransferCount(),
config2.getTransmissionConfiguration().getMinSampleTransferCount() );
assertEquals( "Unexpected value for maximum sample transfer count",
config.getTransmissionConfiguration().getMaxSampleTransferCount(),
config2.getTransmissionConfiguration().getMaxSampleTransferCount() );
assertEquals( "Unexpected value for minimum transfer frequency",
config.getTransmissionConfiguration().getMinTransferFrequency(),
config2.getTransmissionConfiguration().getMinTransferFrequency() );
assertEquals( "Unexpected value for remote host",
config.getTransmissionConfiguration().getProtocolConfig().getURL(),
config2.getTransmissionConfiguration().getProtocolConfig().getURL() );
assertEquals(
"Unexpected value for user name",
config.getTransmissionConfiguration().getProtocolConfig().getUserName(),
config2.getTransmissionConfiguration().getProtocolConfig().getUserName() );
assertEquals(
"Unexpected value for password",
config.getTransmissionConfiguration().getProtocolConfig().getAuthPassword(),
config2.getTransmissionConfiguration().getProtocolConfig().getAuthPassword() );
assertEquals( "Unexpected value for archive type",
config.getTransmissionConfiguration().getArchiveType(),
config2.getTransmissionConfiguration().getArchiveType() );
assertEquals(
"Unexpected value for connection strategy",
config.getTransmissionConfiguration().getProtocolConfig().getConnectionStrategy(),
config2.getTransmissionConfiguration().getProtocolConfig().getConnectionStrategy() );
}
catch ( Exception e )
{
e.printStackTrace();
fail( "Unexpected exception during serialization" );
}
}
}