blob: 5528197c9360e8fc776f2303ef3b05ca22c2a392 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014-2016 Akos Horvath, Abel Hegedus, Tamas Borbas, Marton Bur, Zoltan Ujhelyi, Robert Doczi, Daniel Segesdi, Peter Lunk, IncQuery Labs Ltd.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-v20.html.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.viatra.examples.cps.xform.m2m.tests.mappings
import org.eclipse.viatra.examples.cps.cyberPhysicalSystem.HostInstance
import org.eclipse.viatra.examples.cps.traceability.CPSToDeployment
import org.eclipse.viatra.examples.cps.xform.m2m.tests.CPS2DepTest
import org.eclipse.viatra.examples.cps.xform.m2m.launcher.CPSTransformationWrapper
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import static org.junit.Assert.*
@RunWith(Parameterized)
class HostMappingTest extends CPS2DepTest {
new(CPSTransformationWrapper wrapper, String wrapperType) {
super(wrapper, wrapperType)
}
@Test
def singleHost() {
val testId = "singleHost"
startTest(testId)
val cps2dep = prepareEmptyModel(testId)
val instance = cps2dep.prepareHostInstance
cps2dep.initializeTransformation
executeTransformation
cps2dep.assertHostMapping(instance)
endTest(testId)
}
def assertHostMapping(CPSToDeployment cps2dep, HostInstance instance) {
val hosts = cps2dep.deployment.hosts
assertFalse("Host not transformed", hosts.empty)
val traces = cps2dep.traces
assertFalse("Trace not created", traces.empty)
val trace = traces.head
assertEquals("Trace is not complete (cpsElements)", trace.cpsElements, #[instance])
assertEquals("Trace is not complete (depElements)", trace.deploymentElements, hosts)
assertEquals("IP not copied", instance.nodeIp, hosts.head.ip)
}
@Test
def hostIncremental() {
val testId = "hostIncremental"
startTest(testId)
val cps2dep = prepareEmptyModel(testId)
cps2dep.initializeTransformation
executeTransformation
val instance = cps2dep.prepareHostInstance
executeTransformation
cps2dep.assertHostMapping(instance)
endTest(testId)
}
@Test
def removeHost() {
val testId = "removeHost"
startTest(testId)
val cps2dep = prepareEmptyModel(testId)
val host = cps2dep.prepareHostTypeWithId("single.cps.host")
val ip = "1.1.1.1"
val instance = host.prepareHostInstanceWithIP("single.cps.host.instance", ip)
cps2dep.initializeTransformation
executeTransformation
cps2dep.assertHostMapping(instance)
info("Removing host instance from model")
host.instances -= instance
executeTransformation
assertTrue("Host not removed from deployment", cps2dep.deployment.hosts.empty)
assertTrue("Trace not removed", cps2dep.traces.empty)
endTest(testId)
}
@Test
def changeHostIp() {
val testId = "changeHostIp"
startTest(testId)
val cps2dep = prepareEmptyModel(testId)
val host = cps2dep.prepareHostTypeWithId("single.cps.host")
val ip = "1.1.1.1"
val instance = host.prepareHostInstanceWithIP("single.cps.host.instance", ip)
cps2dep.initializeTransformation
executeTransformation
info("Changing host IP")
instance.nodeIp = "1.1.1.2"
executeTransformation
assertTrue("Host IP not changed in deployment", cps2dep.deployment.hosts.head.ip == instance.nodeIp)
endTest(testId)
}
}