package cl.utfsm.acs.acg.core;
import com.cosylab.acs.laser.dao.ACSAlarmDAOImpl;
import cern.laser.business.data.Source;
import junit.framework.TestCase;
public class SourceManagerTest extends TestCase {
AlarmSystemManager _alarmSystemManager;
protected void setUp() throws Exception {
_alarmSystemManager = AlarmSystemManager.getInstance(UserAuthenticator.Role.Administrator);
_alarmSystemManager.connectToManager();
_alarmSystemManager.connectToDAL();
_alarmSystemManager.getAlarmManager().loadFromCDB();
}
public void testGetInstance() throws Exception {
_alarmSystemManager.disconnectFromManager();
AlarmSystemManager.destroy();
AcsInformation _acsInfo;
DAOManager _daoManager;
_acsInfo = new AcsInformation("Test client");
_daoManager = new DAOManager(_acsInfo.getContainerServices());
_daoManager.connect();
((ACSAlarmDAOImpl)_daoManager.getAlarmDAO()).loadAlarms();
SourceManager s1 = SourceManager.getInstance(_daoManager.getSourceDAO());
SourceManager s2 = SourceManager.getInstance(_daoManager.getSourceDAO());
assertNotNull(s1);
assertNotNull(s2);
assertEquals(s1, s2);
_acsInfo.disconnect();
_alarmSystemManager = AlarmSystemManager.getInstance(UserAuthenticator.Role.Administrator);
_alarmSystemManager.connectToManager();
_alarmSystemManager.connectToDAL();
}
public void testGetAllSources() {
SourceManager s1 = _alarmSystemManager.getSourceManager();
assertNotNull(s1);
s1.loadFromCDB();
Source [] sources = s1.getAllSources();
for (int i = 0; i < sources.length; i++) {
assertNotNull(sources[i]);
assertNotNull(sources[i].getSourceId());
assertNotNull(sources[i].getName());
}
}
public void testGetSource() {
SourceManager s1 = _alarmSystemManager.getSourceManager();
assertNotNull(s1);
s1.loadFromCDB();
Source [] sources = s1.getAllSources();
for (int i = 0; i < sources.length; i++) {
Source s = s1.getSource(sources[i].getName());
assertNotNull(s);
assertEquals(s.getName(), sources[i].getName());
assertEquals(s.getSourceId(), sources[i].getSourceId());
}
}
public void testReloadFromCDB() {
SourceManager s1 = _alarmSystemManager.getSourceManager();
assertNotNull(s1);
s1.loadFromCDB();
Source []sources1 = s1.getAllSources();
s1.loadFromCDB();
Source []sources2 = s1.getAllSources();
assertNotNull(sources1);
assertNotNull(sources2);
for (int i = 0; i < sources1.length; i++) {
Source source1 = sources1[i];
Source source2 = sources1[i];
assertNotNull(source1);
assertNotNull(source2);
assertEquals(source1.getName(), source2.getName());
assertEquals(source1.getSourceId(), source2.getSourceId());
}
}
public void testAddSource() throws Exception {
SourceManager sm = _alarmSystemManager.getSourceManager();
assertNotNull(sm);
Source[] sources1 = sm.getAllSources();
assertNotNull(sources1);
Source newSource = new Source();
newSource.setSourceId("NEW SOURCE");
sm.addSource(newSource);
Source[] sources2 = sm.getAllSources();
assertNotNull(sources2);
assertEquals(sources1.length + 1, sources2.length);
boolean check = false;
for (int i = 0; i < sources2.length; i++) {
if (sources2[i].getName().compareTo("NEW SOURCE") == 0){
check = true;
}
}
assertTrue(check);
check = false;
try {
sm.addSource(newSource);
} catch (IllegalOperationException e) {
check = true;
}
assertTrue(check);
}
public void testDeleteSource() throws Exception {
SourceManager sm = _alarmSystemManager.getSourceManager();
assertNotNull(sm);
sm.loadFromCDB();
Source[] sources1 = sm.getAllSources();
assertNotNull(sources1);
// Check if we cannot delete an not existent source
Source newSource = new Source();
newSource.setSourceId("NEW SOURCE");
boolean deleted = false;
deleted = sm.deleteSource(newSource);
assertFalse(deleted);
Source[] sources2 = sm.getAllSources();
assertNotNull(sources2);
assertEquals(sources1.length, sources2.length);
// Check if we can delete an existing source
boolean check = false;
deleted = false;
sources1 = sm.getAllSources();
Source deletedSource = sources1[0];
try {
deleted = sm.deleteSource(deletedSource);
} catch(IllegalOperationException e){
check = true;
}
assertFalse(check);
assertTrue(deleted);
sources2 = sm.getAllSources();
assertNotNull(sources2);
assertEquals(sources1.length - 1, sources2.length);
check = false;
for (int i = 0; i < sources2.length; i++) {
assertNotNull(sources2[i]);
if (sources2[i].getName().compareTo(deletedSource.getName()) == 0){
check = true;
}
}
assertFalse(check);
// Check if the source is already in use by a FaultFamily
newSource = new Source();
newSource.setSourceId("NEW SOURCE");
sm.addSource(newSource);
check = false;
deleted = false;
try {
deleted = sm.deleteSource(newSource);
} catch(IllegalOperationException e){
check = true;
}
assertFalse(check);
assertTrue(deleted);
}
protected void tearDown() throws Exception {
//_acsInfo.disconnect();
//SourceManager.destroy();
//_alarmSystemManager.disconnectFromManager();
AlarmSystemManager.destroy();
CategoryManager.destroy();
}
}