/**
* Copyright (C) 2015 Orange
* 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 com.francetelecom.clara.cloud.logicalmodel;
import static org.fest.assertions.Assertions.assertThat;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import org.junit.Test;
public class LogicalDeploymentTest {
LogicalDeployment ld = new LogicalDeployment();
@Test
public void findLogicalServiceByLabel_returns_requested_instance() {
//given
LogicalService sa1 = new LogicalServiceTestTypeA(ld, "service 1");
LogicalService sa2 = new LogicalServiceTestTypeA(ld, "service 2");
LogicalService sa3 = new LogicalServiceTestTypeA(ld, "service 3");
//when
LogicalService service = ld.findLogicalService("service 3");
assertThat(service).isEqualTo(sa3);
}
@Test(expected = IllegalArgumentException.class)
public void findLogicalServiceByLabel_throws_IAE_if_requested_instance_missing() {
//given an empty ld
//when
LogicalService service = ld.findLogicalService("service 3");
}
@Test
public void list_logical_services_by_type_should_be_sorted_by_subtype_and_label() {
LogicalService sb2 = new LogicalServiceTestTypeB(ld, "zz service");
LogicalService sb1 = new LogicalServiceTestTypeB(ld, "aa service");
LogicalService sa2 = new LogicalServiceTestTypeA(ld, "service 2");
LogicalService sa3 = new LogicalServiceTestTypeA(ld, "service 3");
LogicalService sa1 = new LogicalServiceTestTypeA(ld, "service 1");
Set<LogicalServiceTest> serviceServices = ld.listLogicalServices(LogicalServiceTest.class);
// we need to convert returned set as a list to assert list are equal
List<Object> servicesList = Arrays.asList(serviceServices.toArray());
assertThat(servicesList).isEqualTo(Arrays.asList(sa1, sa2, sa3, sb1, sb2));
}
@Test
public void list_logical_services_should_be_sorted_by_type_and_label() {
LogicalService sb2 = new LogicalServiceTestTypeB(ld, "zz service");
LogicalService sb1 = new LogicalServiceTestTypeB(ld, "aa service");
LogicalService sa2 = new LogicalServiceTestTypeA(ld, "service 2");
LogicalService sa3 = new LogicalServiceTestTypeA(ld, "service 3");
LogicalService sa1 = new LogicalServiceTestTypeA(ld, "service 1");
List<LogicalService> services = ld.listLogicalServices();
assertThat(services).isEqualTo(Arrays.asList(sa1,sa2, sa3, sb1, sb2));
}
@Test
public void list_execution_nodes_should_be_sorted_by_type_and_label() {
ProcessingNode execNodeB2 = new LogicalExecutionNodeTestTypeB(ld, "zz node");
ProcessingNode execNodeB1 = new LogicalExecutionNodeTestTypeB(ld, "aa node");
ProcessingNode execNodeA2 = new LogicalExecutionNodeTestTypeA(ld, "node 2");
ProcessingNode execNodeA3 = new LogicalExecutionNodeTestTypeA(ld, "node 3");
ProcessingNode execNodeA1 = new LogicalExecutionNodeTestTypeA(ld, "node 1");
List<ProcessingNode> processingNodes = ld.listProcessingNodes();
assertThat(processingNodes).isEqualTo(Arrays.asList(execNodeA1,execNodeA2, execNodeA3, execNodeB1, execNodeB2));
}
@Test
public void list_execution_nodes_by_type_should_be_sorted_by_subtype_and_label() {
ProcessingNode execNodeB2 = new LogicalExecutionNodeTestTypeB(ld, "zz node");
ProcessingNode execNodeB1 = new LogicalExecutionNodeTestTypeB(ld, "aa node");
ProcessingNode execNodeA2 = new LogicalExecutionNodeTestTypeA(ld, "node 2");
ProcessingNode execNodeA3 = new LogicalExecutionNodeTestTypeA(ld, "node 3");
ProcessingNode execNodeA1 = new LogicalExecutionNodeTestTypeA(ld, "node 1");
List<LogicalExecutionNodeTest> services = ld.listProcessingNodes(LogicalExecutionNodeTest.class);
assertThat(services).isEqualTo(Arrays.asList(execNodeA1,execNodeA2, execNodeA3, execNodeB1, execNodeB2));
}
// LogicalService test classes
class LogicalServiceTest extends LogicalService {
private static final long serialVersionUID = 2058901305261017505L;
LogicalServiceTest(LogicalDeployment ld, String label) {
setLabel(label);
ld.addLogicalService(this);
}
// simplify toString()
public String toString() { return label; }
}
class LogicalServiceTestTypeA extends LogicalServiceTest {
private static final long serialVersionUID = 8728985488017570335L;
LogicalServiceTestTypeA(LogicalDeployment ld, String label) {
super(ld, label);
}
}
class LogicalServiceTestTypeB extends LogicalServiceTest {
private static final long serialVersionUID = -8396511925099166138L;
LogicalServiceTestTypeB(LogicalDeployment ld, String label) {
super(ld, label);
}
}
// JeeProcessing test classes
class LogicalExecutionNodeTest extends ProcessingNode {
private static final long serialVersionUID = -1056208070223994032L;
LogicalExecutionNodeTest(LogicalDeployment ld, String label) {
super(label, ld);
}
// simplify toString()
public String toString() { return label; }
}
class LogicalExecutionNodeTestTypeA extends LogicalExecutionNodeTest {
private static final long serialVersionUID = -1031622706161968856L;
LogicalExecutionNodeTestTypeA(LogicalDeployment ld, String label) {
super(ld, label);
}
}
class LogicalExecutionNodeTestTypeB extends LogicalExecutionNodeTest {
private static final long serialVersionUID = -6898349595490712170L;
LogicalExecutionNodeTestTypeB(LogicalDeployment ld, String label) {
super(ld, label);
}
}
}