blob: cde1ec536ce39418cd2a5f1f258b2327f50cca24 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2016 Orange.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.om2m.ipe.sdt.testsuite;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.om2m.core.service.CseService;
import org.eclipse.om2m.ipe.sdt.testsuite.module.AbstractModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.AlarmSpeakerModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.BinarySwitchModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.ColourModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.ColourSaturationModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.FaultDetectionModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.SmokeSensorModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.WaterLevelModuleTest;
import org.eclipse.om2m.ipe.sdt.testsuite.module.WaterSensorModuleTest;
import org.eclipse.om2m.sdt.Module;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
public class SDTModuleTestSuite {
private final BundleContext bundleContext;
private final CseService cseService;
private final ServiceTracker sdtModuleServiceTracker;
private final List<TestReport> testReports = new ArrayList<>();
public SDTModuleTestSuite(final BundleContext pBundleContext, final CseService pCseService) {
this.bundleContext = pBundleContext;
this.cseService = pCseService;
// create SDT Module Tracker
sdtModuleServiceTracker = new ServiceTracker(bundleContext, Module.class.getName(),
new ServiceTrackerCustomizer() {
@Override
public void removedService(ServiceReference reference, Object service) {
// nothing to do as we return null in the addingService
// method.
}
@Override
public void modifiedService(ServiceReference reference, Object service) {
// nothing to do
}
@Override
public Object addingService(ServiceReference reference) {
Module module = (Module) bundleContext.getService(reference);
launchModuleTest(module);
// always return null as we don't want to track any
// service
return null;
}
});
sdtModuleServiceTracker.open();
}
/**
* Launch module test.
*
* @param module
*/
private void launchModuleTest(final Module module) {
// identify the module based on its module definition
String moduleDefinition = module.getDefinition();
AbstractModuleTest amt = null;
switch (moduleDefinition) {
case "org.onem2m.home.moduleclass.binarySwitch":
amt = new BinarySwitchModuleTest(cseService, module);
break;
case "org.onem2m.home.moduleclass.smokeSensor":
amt = new SmokeSensorModuleTest(cseService, module);
break;
case "org.onem2m.home.moduleclass.colourSaturation":
amt = new ColourSaturationModuleTest(cseService, module);
break;
case "org.onem2m.home.moduleclass.colour":
amt = new ColourModuleTest(cseService, module);
break;
case "org.onem2m.home.moduleclass.faultDetection":
amt = new FaultDetectionModuleTest(cseService, module);
break;
case "org.onem2m.home.moduleclass.waterSensor":
amt = new WaterSensorModuleTest(cseService, module);
break;
// case "org.onem2m.home.moduleclass.runMode":
// amt = new RunStateModuleTest(cseService, module);
// break;
case "org.onem2m.home.moduleclass.alarmSpeaker":
amt = new AlarmSpeakerModuleTest(cseService, module);
break;
case "org.onem2m.home.moduleclass.waterLevel":
amt = new WaterLevelModuleTest(cseService, module);
break;
default:
break;
}
if (amt != null) {
List<TestReport> tests = amt.launchTests();
testReports.addAll(tests);
} else {
return;
// TestReport report = null;
// report = new TestReport("missing ModuleTest");
// report.setErrorMessage("missing TestModule for module " + module.getDefinition());
// report.setState(State.KO);
// testReports.add(report);
}
System.out.println("\n");
System.out.println("\n");
System.out.println("------------------------------------------------------------");
for(TestReport tr : testReports) {
System.out.println(tr.toString());
Exception e = tr.getException();
if (e != null) {
e.printStackTrace();
}
}
System.out.println("------------------------------------------------------------");
System.out.println("\n");
System.out.println("\n");
}
}