diff options
Diffstat (limited to 'appc-lifecycle-management')
19 files changed, 1257 insertions, 505 deletions
diff --git a/appc-lifecycle-management/state-machine-lib/pom.xml b/appc-lifecycle-management/state-machine-lib/pom.xml index 9618d61b3..5178c7a08 100644 --- a/appc-lifecycle-management/state-machine-lib/pom.xml +++ b/appc-lifecycle-management/state-machine-lib/pom.xml @@ -18,6 +18,10 @@ <artifactId>appc-lifecycle-management-api</artifactId> <version>1.1.0-SNAPSHOT</version> </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + </dependency> </dependencies> <properties> diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineFactory.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineFactory.java index c4b49b7a1..3e38231b1 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineFactory.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineFactory.java @@ -27,11 +27,13 @@ package org.openecomp.appc.statemachine.impl; import org.openecomp.appc.statemachine.StateMachine; import org.openecomp.appc.statemachine.objects.StateMachineMetadata; - +/** + * Factory of StateMachine + */ public class StateMachineFactory { private StateMachineFactory(){ - + throw new IllegalAccessError("StateMachineFactory"); } public static StateMachine getStateMachine(StateMachineMetadata metadata){ diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineImpl.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineImpl.java index 9fc1233cd..f0cb4919b 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineImpl.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/StateMachineImpl.java @@ -36,11 +36,14 @@ import org.openecomp.appc.statemachine.objects.StateMachineMetadata; import org.openecomp.appc.statemachine.objects.StateMachineResponse; import org.openecomp.appc.statemachine.objects.Transition; - +/** + * Implementation of StateMachine + */ public class StateMachineImpl implements StateMachine { + private final String invalidInputFormat = "VNF State or incoming event is invalid. State = %s event = %s"; + final String toStringFormat = "StateMachineImpl{states=%s, events=%s}"; private final Set<State> states; - private final Set<Event> events; StateMachineImpl(StateMachineMetadata metadata){ @@ -50,14 +53,16 @@ public class StateMachineImpl implements StateMachine { this.events.addAll(metadata.getEvents()); } + @Override public StateMachineResponse handleEvent(State inputState, Event event) throws InvalidInputException{ if(!validateInputs(inputState,event)){ - throw new InvalidInputException("VNF State or incoming event is invalid. State = " +inputState + " event = " + event ); + throw new InvalidInputException(String.format(invalidInputFormat, inputState, event)); } StateMachineResponse response = new StateMachineResponse(); - State currentState = null,nextState = null; + State currentState = null; + State nextState = null; for(State stateInSet:states){ if(stateInSet.equals(inputState)){ currentState = stateInSet; @@ -84,15 +89,15 @@ public class StateMachineImpl implements StateMachine { return response; } - private boolean validateInputs(State state,Event event) { - return state != null && event != null && this.states.contains(state) && this.events.contains(event); + boolean validateInputs(State state,Event event) { + return state != null + && event != null + && this.states.contains(state) + && this.events.contains(event); } @Override public String toString() { - return "StateMachineImpl{" + - "states=" + states + - ", events=" + events + - '}'; + return String.format(toStringFormat, states, events); } } diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/AppcOamMetaDataReader.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/AppcOamMetaDataReader.java index 3c1f0945d..637136bed 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/AppcOamMetaDataReader.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/AppcOamMetaDataReader.java @@ -29,8 +29,14 @@ import org.openecomp.appc.statemachine.objects.Event; import org.openecomp.appc.statemachine.objects.State; import org.openecomp.appc.statemachine.objects.StateMachineMetadata; +/** + * Reader for APPC OAM MetaData + */ public class AppcOamMetaDataReader implements StateMetaDataReader { + /** + * APPC Operation Enum + */ public enum AppcOperation { MaintenanceMode, Restart, @@ -40,67 +46,67 @@ public class AppcOamMetaDataReader implements StateMetaDataReader { @Override public StateMachineMetadata readMetadata() { - State NOT_INSTANTIATED = new State(AppcOamStates.NotInstantiated.toString()); - State INSTANTIATED = new State(AppcOamStates.Instantiated.toString()); - State RESTARTING = new State(AppcOamStates.Restarting.toString()); - State STARTING = new State(AppcOamStates.Starting.toString()); - State STARTED = new State(AppcOamStates.Started.toString()); - State ENTERING_MAINTENANCE_MODE = new State(AppcOamStates.EnteringMaintenanceMode.toString()); - State MAINTENANCE_MODE = new State(AppcOamStates.MaintenanceMode.toString()); - State ERROR = new State(AppcOamStates.Error.toString()); - State UNKNOWN = new State(AppcOamStates.Unknown.toString()); - State STOPPING = new State(AppcOamStates.Stopping.toString()); - State STOPPED = new State(AppcOamStates.Stopped.toString()); + State notInstantiated = new State(AppcOamStates.NotInstantiated.toString()); + State instantiated = new State(AppcOamStates.Instantiated.toString()); + State restarting = new State(AppcOamStates.Restarting.toString()); + State starting = new State(AppcOamStates.Starting.toString()); + State started = new State(AppcOamStates.Started.toString()); + State enteringMaintenanceMode = new State(AppcOamStates.EnteringMaintenanceMode.toString()); + State maintenanceMode = new State(AppcOamStates.MaintenanceMode.toString()); + State error = new State(AppcOamStates.Error.toString()); + State unknown = new State(AppcOamStates.Unknown.toString()); + State stopping = new State(AppcOamStates.Stopping.toString()); + State stopped = new State(AppcOamStates.Stopped.toString()); - Event START = new Event(AppcOperation.Start.toString()); - Event STOP = new Event(AppcOperation.Stop.toString()); - Event MAINTENANCE_MODE_EVENT = new Event(AppcOperation.MaintenanceMode.toString()); - Event RESTART = new Event(AppcOperation.Restart.toString()); + Event start = new Event(AppcOperation.Start.toString()); + Event stop = new Event(AppcOperation.Stop.toString()); + Event maintenanceModeEvent = new Event(AppcOperation.MaintenanceMode.toString()); + Event restart = new Event(AppcOperation.Restart.toString()); StateMachineMetadata.StateMachineMetadataBuilder builder = new StateMachineMetadata .StateMachineMetadataBuilder(); - builder = builder.addState(NOT_INSTANTIATED); - builder = builder.addState(INSTANTIATED); - builder = builder.addState(STARTING); - builder = builder.addState(STARTED); - builder = builder.addState(ERROR); - builder = builder.addState(UNKNOWN); - builder = builder.addState(STOPPING); - builder = builder.addState(STOPPED); - builder = builder.addState(ENTERING_MAINTENANCE_MODE); - builder = builder.addState(MAINTENANCE_MODE); - builder = builder.addState(RESTARTING); + builder = builder.addState(notInstantiated); + builder = builder.addState(instantiated); + builder = builder.addState(starting); + builder = builder.addState(started); + builder = builder.addState(error); + builder = builder.addState(unknown); + builder = builder.addState(stopping); + builder = builder.addState(stopped); + builder = builder.addState(enteringMaintenanceMode); + builder = builder.addState(maintenanceMode); + builder = builder.addState(restarting); - builder = builder.addEvent(START); - builder = builder.addEvent(STOP); - builder = builder.addEvent(RESTART); - builder = builder.addEvent(MAINTENANCE_MODE_EVENT); + builder = builder.addEvent(start); + builder = builder.addEvent(stop); + builder = builder.addEvent(restart); + builder = builder.addEvent(maintenanceModeEvent); /* * for addTransition: * param 1: current state; param 2: received command/request; param 3: new transition state */ // start - builder = builder.addTransition(STOPPED, START, STARTING); - builder = builder.addTransition(MAINTENANCE_MODE, START, STARTING); - builder = builder.addTransition(ERROR, START, STARTING); + builder = builder.addTransition(stopped, start, starting); + builder = builder.addTransition(maintenanceMode, start, starting); + builder = builder.addTransition(error, start, starting); // stop - builder = builder.addTransition(STARTED, STOP, STOPPING); - builder = builder.addTransition(STARTING, STOP, STOPPING); - builder = builder.addTransition(ENTERING_MAINTENANCE_MODE, STOP, STOPPING); - builder = builder.addTransition(MAINTENANCE_MODE, STOP, STOPPING); - builder = builder.addTransition(ERROR, STOP, STOPPING); + builder = builder.addTransition(started, stop, stopping); + builder = builder.addTransition(starting, stop, stopping); + builder = builder.addTransition(enteringMaintenanceMode, stop, stopping); + builder = builder.addTransition(maintenanceMode, stop, stopping); + builder = builder.addTransition(error, stop, stopping); // maintenance mode builder = builder.addTransition( - STARTED, MAINTENANCE_MODE_EVENT, ENTERING_MAINTENANCE_MODE); + started, maintenanceModeEvent, enteringMaintenanceMode); // restart - builder = builder.addTransition(STOPPED, RESTART, RESTARTING); - builder = builder.addTransition(STARTING, RESTART, RESTARTING); - builder = builder.addTransition(STARTED, RESTART, RESTARTING); - builder = builder.addTransition(ENTERING_MAINTENANCE_MODE, RESTART, RESTARTING); - builder = builder.addTransition(MAINTENANCE_MODE, RESTART, RESTARTING); - builder = builder.addTransition(ERROR, RESTART, RESTARTING); + builder = builder.addTransition(stopped, restart, restarting); + builder = builder.addTransition(starting, restart, restarting); + builder = builder.addTransition(started, restart, restarting); + builder = builder.addTransition(enteringMaintenanceMode, restart, restarting); + builder = builder.addTransition(maintenanceMode, restart, restarting); + builder = builder.addTransition(error, restart, restarting); return builder.build(); } diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/VnfMetaDataReader.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/VnfMetaDataReader.java index 8f2a69f84..cd573918b 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/VnfMetaDataReader.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/impl/readers/VnfMetaDataReader.java @@ -30,8 +30,14 @@ import org.openecomp.appc.statemachine.objects.Event; import org.openecomp.appc.statemachine.objects.State; import org.openecomp.appc.statemachine.objects.StateMachineMetadata; +/** + * Reader for VNF MetaData + */ public class VnfMetaDataReader implements StateMetaDataReader { + /** + * VNF Operations + */ public enum VNFOperation { Configure, Test, HealthCheck, Start, Terminate, Restart, Rebuild, Stop, ConfigModify, @@ -51,10 +57,15 @@ public class VnfMetaDataReader implements StateMetaDataReader { } } - private enum VNFStates { - Not_Instantiated, Instantiated, Configuring, Configured, Testing, Tested, Rebuilding, Restarting, Starting, + /** + * VNF States + */ + enum VNFStates { + Not_Instantiated, Instantiated, Configuring, Configured, Testing, Tested, + Rebuilding, Restarting, Starting, Error, Running, Unknown, Terminating, Stopping, Stopped, - Backing_Up, Snapshotting, Software_Uploading, Upgrading, Rollbacking, Licensing, Migrating, Evacuating, + Backing_Up, Snapshotting, Software_Uploading, Upgrading, + Rollbacking, Licensing, Migrating, Evacuating, NOT_ORCHESTRATED("NOT ORCHESTRATED"), Created; String stateName; @@ -73,411 +84,410 @@ public class VnfMetaDataReader implements StateMetaDataReader { } } + @Override public StateMachineMetadata readMetadata() { - { - State NOT_INSTANTIATED = new State(VNFStates.Not_Instantiated.toString()); - State INSTANTIATED = new State(VNFStates.Instantiated.toString()); - State CONFIGURING = new State(VNFStates.Configuring.toString()); - State CONFIGURED = new State(VNFStates.Configured.toString()); - State TESTING = new State(VNFStates.Testing.toString()); - State TESTED = new State(VNFStates.Tested.toString()); - State REBUILDING = new State(VNFStates.Rebuilding.toString()); - State RESTARTING = new State(VNFStates.Restarting.toString()); - State STARTING = new State(VNFStates.Starting.toString()); - State ERROR = new State(VNFStates.Error.toString()); - State RUNNING = new State(VNFStates.Running.toString()); - State UNKNOWN = new State(VNFStates.Unknown.toString()); - State TERMINATING = new State(VNFStates.Terminating.toString()); - State STOPPING = new State(VNFStates.Stopping.toString()); - State STOPPED = new State(VNFStates.Stopped.toString()); - State NOT_ORCHESTRATED = new State(VNFStates.NOT_ORCHESTRATED.toString()); - - State BACKING_UP = new State(VNFStates.Backing_Up.toString()); - State SNAPSHOTTING = new State(VNFStates.Snapshotting.toString()); - State SOFTWARE_UPLOADING = new State(VNFStates.Software_Uploading.toString()); - State UPGRADING = new State(VNFStates.Upgrading.toString()); - State ROLLBACKING = new State(VNFStates.Rollbacking.toString()); - - State MIGRATING = new State(VNFStates.Migrating.toString()); - State EVACUATING = new State(VNFStates.Evacuating.toString()); - State CREATED= new State(VNFStates.Created.toString()); - - Event START_APPLICATION = new Event(VNFOperation.StartApplication.toString()); - Event CONFIGURE = new Event(VNFOperation.Configure.toString()); - Event HEALTHCHECK = new Event(VNFOperation.HealthCheck.toString()); - Event TEST = new Event(VNFOperation.Test.toString()); - Event START = new Event(VNFOperation.Start.toString()); - Event TERMINATE = new Event(VNFOperation.Terminate.toString()); - Event RESTART = new Event(VNFOperation.Restart.toString()); - Event REBUILD = new Event(VNFOperation.Rebuild.toString()); - Event STOP = new Event(VNFOperation.Stop.toString()); - Event CONFIG_MODIFY = new Event(VNFOperation.ConfigModify.toString()); - Event CONFIG_SCALEOUT = new Event(VNFOperation.ConfigScaleOut.toString()); - Event CONFIG_RESTORE = new Event(VNFOperation.ConfigRestore.toString()); - Event BACKUP = new Event(VNFOperation.Backup.toString()); - Event SNAPSHOT = new Event(VNFOperation.Snapshot.toString()); - Event SOFTWARE_UPLOAD = new Event(VNFOperation.SoftwareUpload.toString()); - Event LIVE_UPGRADE = new Event(VNFOperation.LiveUpgrade.toString()); - Event ROLLBACK = new Event(VNFOperation.Rollback.toString()); - Event SYNC = new Event(VNFOperation.Sync.toString()); - Event AUDIT = new Event(VNFOperation.Audit.toString()); - Event MIGRATE = new Event(VNFOperation.Migrate.toString()); - Event EVACUATE = new Event(VNFOperation.Evacuate.toString()); - Event CONFIG_BACKUP = new Event(VNFOperation.ConfigBackup.toString()); - Event CONFIG_BACKUP_DELETE = new Event(VNFOperation.ConfigBackupDelete.toString()); - Event CONFIG_EXPORT = new Event(VNFOperation.ConfigExport.toString()); - Event STOP_APPLICATION= new Event(VNFOperation.StopApplication.toString()); - - Event LOCK = new Event(VNFOperation.Lock.toString()); - Event UNLOCK = new Event(VNFOperation.Unlock.toString()); - Event CHECKLOCK = new Event(VNFOperation.CheckLock.toString()); - - Event SUCCESS = new Event(VNFOperationOutcome.SUCCESS.toString()); - Event FAILURE = new Event(VNFOperationOutcome.FAILURE.toString()); - - - StateMachineMetadata.StateMachineMetadataBuilder builder = new StateMachineMetadata.StateMachineMetadataBuilder(); - - builder = builder.addState(NOT_INSTANTIATED); - builder = builder.addState(INSTANTIATED); - builder = builder.addState(CONFIGURING); - builder = builder.addState(CONFIGURED); - builder = builder.addState(TESTING); - builder = builder.addState(TESTED); - builder = builder.addState(REBUILDING); - builder = builder.addState(RESTARTING); - builder = builder.addState(STARTING); - builder = builder.addState(ERROR); - builder = builder.addState(RUNNING); - builder = builder.addState(UNKNOWN); - builder = builder.addState(TERMINATING); - builder = builder.addState(STOPPING); - builder = builder.addState(STOPPED); - - builder = builder.addState(BACKING_UP); - builder = builder.addState(SNAPSHOTTING); - builder = builder.addState(SOFTWARE_UPLOADING); - builder = builder.addState(UPGRADING); - builder = builder.addState(ROLLBACKING); - builder = builder.addState(MIGRATING); - builder = builder.addState(EVACUATING); - builder = builder.addState(NOT_ORCHESTRATED); - builder = builder.addState(CREATED); - builder = builder.addEvent(START_APPLICATION); - builder = builder.addEvent(CONFIGURE); - builder = builder.addEvent(TEST); - builder = builder.addEvent(START); - builder = builder.addEvent(TERMINATE); - builder = builder.addEvent(RESTART); - builder = builder.addEvent(REBUILD); - builder = builder.addEvent(SUCCESS); - builder = builder.addEvent(FAILURE); - builder = builder.addEvent(STOP); - builder = builder.addEvent(CONFIG_MODIFY); - builder = builder.addEvent(CONFIG_SCALEOUT); - builder = builder.addEvent(CONFIG_RESTORE); - builder = builder.addEvent(HEALTHCHECK); - builder = builder.addEvent(BACKUP); - builder = builder.addEvent(SNAPSHOT); - builder = builder.addEvent(SOFTWARE_UPLOAD); - builder = builder.addEvent(LIVE_UPGRADE); - builder = builder.addEvent(ROLLBACK); - builder = builder.addEvent(SYNC); - builder = builder.addEvent(AUDIT); - builder = builder.addEvent(MIGRATE); - builder = builder.addEvent(EVACUATE); - builder = builder.addEvent(LOCK); - builder = builder.addEvent(UNLOCK); - builder = builder.addEvent(CHECKLOCK); - builder = builder.addEvent(CONFIG_BACKUP); - builder = builder.addEvent(CONFIG_BACKUP_DELETE); - builder = builder.addEvent(CONFIG_EXPORT); - builder = builder.addEvent(STOP_APPLICATION); - - builder = builder.addTransition(NOT_ORCHESTRATED,CONFIGURE,CONFIGURING); - builder = builder.addTransition(NOT_ORCHESTRATED,TEST,TESTING); - builder = builder.addTransition(NOT_ORCHESTRATED,START,STARTING); - builder = builder.addTransition(NOT_ORCHESTRATED,TERMINATE,TERMINATING); - builder = builder.addTransition(NOT_ORCHESTRATED,RESTART,RESTARTING); - builder = builder.addTransition(NOT_ORCHESTRATED,REBUILD,REBUILDING); - builder = builder.addTransition(NOT_ORCHESTRATED,STOP,STOPPING); - builder = builder.addTransition(NOT_ORCHESTRATED,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(NOT_ORCHESTRATED,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(NOT_ORCHESTRATED,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(NOT_ORCHESTRATED,HEALTHCHECK,TESTING); - builder = builder.addTransition(NOT_ORCHESTRATED,BACKUP,BACKING_UP); - builder = builder.addTransition(NOT_ORCHESTRATED,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(NOT_ORCHESTRATED,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(NOT_ORCHESTRATED,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(NOT_ORCHESTRATED,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(NOT_ORCHESTRATED,MIGRATE,MIGRATING); - builder = builder.addTransition(NOT_ORCHESTRATED,EVACUATE,EVACUATING); - builder = builder.addTransition(NOT_ORCHESTRATED,LOCK,NOT_ORCHESTRATED); - builder = builder.addTransition(NOT_ORCHESTRATED,UNLOCK,NOT_ORCHESTRATED); - builder = builder.addTransition(NOT_ORCHESTRATED,CHECKLOCK,NOT_ORCHESTRATED); - builder = builder.addTransition(NOT_ORCHESTRATED,START_APPLICATION,STARTING); - builder = builder.addTransition(NOT_ORCHESTRATED,STOP_APPLICATION,STOPPING); - builder = builder.addTransition(NOT_ORCHESTRATED,CONFIG_BACKUP,NOT_ORCHESTRATED); - - builder = builder.addTransition(CREATED,CONFIGURE,CONFIGURING); - builder = builder.addTransition(CREATED,TEST,TESTING); - builder = builder.addTransition(CREATED,START,STARTING); - builder = builder.addTransition(CREATED,TERMINATE,TERMINATING); - builder = builder.addTransition(CREATED,RESTART,RESTARTING); - builder = builder.addTransition(CREATED,REBUILD,REBUILDING); - builder = builder.addTransition(CREATED,STOP,STOPPING); - builder = builder.addTransition(CREATED,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(CREATED,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(CREATED,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(CREATED,HEALTHCHECK,TESTING); - builder = builder.addTransition(CREATED,BACKUP,BACKING_UP); - builder = builder.addTransition(CREATED,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(CREATED,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(CREATED,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(CREATED,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(CREATED,MIGRATE,MIGRATING); - builder = builder.addTransition(CREATED,EVACUATE,EVACUATING); - builder = builder.addTransition(CREATED,LOCK,CREATED); - builder = builder.addTransition(CREATED,UNLOCK,CREATED); - builder = builder.addTransition(CREATED,CHECKLOCK,CREATED); - builder = builder.addTransition(CREATED,START_APPLICATION,STARTING); - builder = builder.addTransition(CREATED,STOP_APPLICATION,STOPPING); - builder = builder.addTransition(CREATED,CONFIG_BACKUP,CREATED); - - builder = builder.addTransition(INSTANTIATED,CONFIGURE,CONFIGURING); - builder = builder.addTransition(INSTANTIATED,TEST,TESTING); - builder = builder.addTransition(INSTANTIATED,START,STARTING); - builder = builder.addTransition(INSTANTIATED,TERMINATE,TERMINATING); - builder = builder.addTransition(INSTANTIATED,RESTART,RESTARTING); - builder = builder.addTransition(INSTANTIATED,REBUILD,REBUILDING); - builder = builder.addTransition(INSTANTIATED,STOP,STOPPING); - builder = builder.addTransition(INSTANTIATED,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(INSTANTIATED,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(INSTANTIATED,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(INSTANTIATED,HEALTHCHECK,TESTING); - builder = builder.addTransition(INSTANTIATED,BACKUP,BACKING_UP); - builder = builder.addTransition(INSTANTIATED,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(INSTANTIATED,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(INSTANTIATED,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(INSTANTIATED,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(INSTANTIATED,MIGRATE,MIGRATING); - builder = builder.addTransition(INSTANTIATED,EVACUATE,EVACUATING); - builder = builder.addTransition(INSTANTIATED,LOCK,INSTANTIATED); - builder = builder.addTransition(INSTANTIATED,UNLOCK,INSTANTIATED); - builder = builder.addTransition(INSTANTIATED,CHECKLOCK,INSTANTIATED); - - builder = builder.addTransition(CONFIGURED,CONFIGURE,CONFIGURING); - builder = builder.addTransition(CONFIGURED,TEST,TESTING); - builder = builder.addTransition(CONFIGURED,START,STARTING); - builder = builder.addTransition(CONFIGURED,TERMINATE,TERMINATING); - builder = builder.addTransition(CONFIGURED,RESTART,RESTARTING); - builder = builder.addTransition(CONFIGURED,REBUILD,REBUILDING); - builder = builder.addTransition(CONFIGURED,STOP,STOPPING); - builder = builder.addTransition(CONFIGURED,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(CONFIGURED,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(CONFIGURED,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(CONFIGURED,HEALTHCHECK,TESTING); - builder = builder.addTransition(CONFIGURED,BACKUP,BACKING_UP); - builder = builder.addTransition(CONFIGURED,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(CONFIGURED,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(CONFIGURED,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(CONFIGURED,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(CONFIGURED,SYNC,CONFIGURED); - builder = builder.addTransition(CONFIGURED,AUDIT,CONFIGURED); - builder = builder.addTransition(CONFIGURED,MIGRATE,MIGRATING); - builder = builder.addTransition(CONFIGURED,EVACUATE,EVACUATING); - builder = builder.addTransition(CONFIGURED,LOCK,CONFIGURED); - builder = builder.addTransition(CONFIGURED,UNLOCK,CONFIGURED); - builder = builder.addTransition(CONFIGURED,CHECKLOCK,CONFIGURED); - builder = builder.addTransition(CONFIGURED,CONFIG_BACKUP,CONFIGURED); - builder = builder.addTransition(CONFIGURED,CONFIG_BACKUP_DELETE,CONFIGURED); - builder = builder.addTransition(CONFIGURED,CONFIG_EXPORT,CONFIGURED); - builder = builder.addTransition(CONFIGURED,STOP_APPLICATION,STOPPING); - - builder = builder.addTransition(TESTED,CONFIGURE,CONFIGURING); - builder = builder.addTransition(TESTED,TEST,TESTING); - builder = builder.addTransition(TESTED,START,STARTING); - builder = builder.addTransition(TESTED,TERMINATE,TERMINATING); - builder = builder.addTransition(TESTED,RESTART,RESTARTING); - builder = builder.addTransition(TESTED,REBUILD,REBUILDING); - builder = builder.addTransition(TESTED,STOP,STOPPING); - builder = builder.addTransition(TESTED,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(TESTED,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(TESTED,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(TESTED,HEALTHCHECK,TESTING); - builder = builder.addTransition(TESTED,BACKUP,BACKING_UP); - builder = builder.addTransition(TESTED,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(TESTED,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(TESTED,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(TESTED,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(TESTED,SYNC,TESTED); - builder = builder.addTransition(TESTED,AUDIT,TESTED); - builder = builder.addTransition(TESTED,MIGRATE,MIGRATING); - builder = builder.addTransition(TESTED,EVACUATE,EVACUATING); - builder = builder.addTransition(TESTED,LOCK,TESTED); - builder = builder.addTransition(TESTED,UNLOCK,TESTED); - builder = builder.addTransition(TESTED,CHECKLOCK,TESTED); - builder = builder.addTransition(TESTED,CONFIG_BACKUP,TESTED); - builder = builder.addTransition(TESTED,CONFIG_BACKUP_DELETE,TESTED); - builder = builder.addTransition(TESTED,CONFIG_EXPORT,TESTED); - builder = builder.addTransition(TESTED,STOP_APPLICATION,STOPPING); - - builder = builder.addTransition(RUNNING,CONFIGURE,CONFIGURING); - builder = builder.addTransition(RUNNING,TEST,TESTING); - builder = builder.addTransition(RUNNING,START,STARTING); - builder = builder.addTransition(RUNNING,TERMINATE,TERMINATING); - builder = builder.addTransition(RUNNING,RESTART,RESTARTING); - builder = builder.addTransition(RUNNING,REBUILD,REBUILDING); - builder = builder.addTransition(RUNNING,STOP,STOPPING); - builder = builder.addTransition(RUNNING,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(RUNNING,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(RUNNING,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(RUNNING,HEALTHCHECK,TESTING); - builder = builder.addTransition(RUNNING,BACKUP,BACKING_UP); - builder = builder.addTransition(RUNNING,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(RUNNING,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(RUNNING,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(RUNNING,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(RUNNING,SYNC,RUNNING); - builder = builder.addTransition(RUNNING,AUDIT,RUNNING); - builder = builder.addTransition(RUNNING,MIGRATE,MIGRATING); - builder = builder.addTransition(RUNNING,EVACUATE,EVACUATING); - builder = builder.addTransition(RUNNING,LOCK,RUNNING); - builder = builder.addTransition(RUNNING,UNLOCK,RUNNING); - builder = builder.addTransition(RUNNING,CHECKLOCK,RUNNING); - builder = builder.addTransition(RUNNING,CONFIG_BACKUP,RUNNING); - builder = builder.addTransition(RUNNING,CONFIG_BACKUP_DELETE,RUNNING); - builder = builder.addTransition(RUNNING,CONFIG_EXPORT,RUNNING); - builder = builder.addTransition(RUNNING,STOP_APPLICATION,STOPPING); - - builder = builder.addTransition(ERROR,CONFIGURE,CONFIGURING); - builder = builder.addTransition(ERROR,TEST,TESTING); - builder = builder.addTransition(ERROR,START,STARTING); - builder = builder.addTransition(ERROR,TERMINATE,TERMINATING); - builder = builder.addTransition(ERROR,RESTART,RESTARTING); - builder = builder.addTransition(ERROR,REBUILD,REBUILDING); - builder = builder.addTransition(ERROR,STOP,STOPPING); - builder = builder.addTransition(ERROR,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(ERROR,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(ERROR,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(ERROR,HEALTHCHECK,TESTING); - builder = builder.addTransition(ERROR,BACKUP,BACKING_UP); - builder = builder.addTransition(ERROR,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(ERROR,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(ERROR,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(ERROR,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(ERROR,SYNC,ERROR); - builder = builder.addTransition(ERROR,AUDIT,ERROR); - builder = builder.addTransition(ERROR,MIGRATE,MIGRATING); - builder = builder.addTransition(ERROR,EVACUATE,EVACUATING); - builder = builder.addTransition(ERROR,LOCK,ERROR); - builder = builder.addTransition(ERROR,UNLOCK,ERROR); - builder = builder.addTransition(ERROR,CHECKLOCK,ERROR); - builder = builder.addTransition(ERROR,CONFIG_BACKUP,ERROR); - builder = builder.addTransition(ERROR,CONFIG_BACKUP_DELETE,ERROR); - builder = builder.addTransition(ERROR,CONFIG_EXPORT,ERROR); - builder = builder.addTransition(ERROR,STOP_APPLICATION,STOPPING); - - builder = builder.addTransition(UNKNOWN,CONFIGURE,CONFIGURING); - builder = builder.addTransition(UNKNOWN,TEST,TESTING); - builder = builder.addTransition(UNKNOWN,START,STARTING); - builder = builder.addTransition(UNKNOWN,TERMINATE,TERMINATING); - builder = builder.addTransition(UNKNOWN,RESTART,RESTARTING); - builder = builder.addTransition(UNKNOWN,REBUILD,REBUILDING); - builder = builder.addTransition(UNKNOWN,STOP,STOPPING); - builder = builder.addTransition(UNKNOWN,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(UNKNOWN,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(UNKNOWN,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(UNKNOWN,HEALTHCHECK,TESTING); - builder = builder.addTransition(UNKNOWN,BACKUP,BACKING_UP); - builder = builder.addTransition(UNKNOWN,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(UNKNOWN,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(UNKNOWN,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(UNKNOWN,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(UNKNOWN,SYNC,UNKNOWN); - builder = builder.addTransition(UNKNOWN,AUDIT,UNKNOWN); - builder = builder.addTransition(UNKNOWN,MIGRATE,MIGRATING); - builder = builder.addTransition(UNKNOWN,EVACUATE,EVACUATING); - builder = builder.addTransition(UNKNOWN,LOCK,UNKNOWN); - builder = builder.addTransition(UNKNOWN,UNLOCK,UNKNOWN); - builder = builder.addTransition(UNKNOWN,CHECKLOCK,UNKNOWN); - builder = builder.addTransition(UNKNOWN,CONFIG_BACKUP,UNKNOWN); - builder = builder.addTransition(UNKNOWN,CONFIG_BACKUP_DELETE,UNKNOWN); - builder = builder.addTransition(UNKNOWN,CONFIG_EXPORT,UNKNOWN); - builder = builder.addTransition(UNKNOWN,STOP_APPLICATION,STOPPING); - - builder = builder.addTransition(STOPPED,CONFIGURE,CONFIGURING); - builder = builder.addTransition(STOPPED,TEST,TESTING); - builder = builder.addTransition(STOPPED,START,STARTING); - builder = builder.addTransition(STOPPED,TERMINATE,TERMINATING); - builder = builder.addTransition(STOPPED,RESTART,RESTARTING); - builder = builder.addTransition(STOPPED,REBUILD,REBUILDING); - builder = builder.addTransition(STOPPED,CONFIG_MODIFY,CONFIGURING); - builder = builder.addTransition(STOPPED,CONFIG_SCALEOUT,CONFIGURING); - builder = builder.addTransition(STOPPED,CONFIG_RESTORE,CONFIGURING); - builder = builder.addTransition(STOPPED,HEALTHCHECK,TESTING); - builder = builder.addTransition(STOPPED,BACKUP,BACKING_UP); - builder = builder.addTransition(STOPPED,SNAPSHOT,SNAPSHOTTING); - builder = builder.addTransition(STOPPED,SOFTWARE_UPLOAD,SOFTWARE_UPLOADING); - builder = builder.addTransition(STOPPED,LIVE_UPGRADE,UPGRADING); - builder = builder.addTransition(STOPPED,ROLLBACK,ROLLBACKING); - builder = builder.addTransition(STOPPED,MIGRATE,MIGRATING); - builder = builder.addTransition(STOPPED,EVACUATE,EVACUATING); - builder = builder.addTransition(STOPPED,LOCK,STOPPED); - builder = builder.addTransition(STOPPED,UNLOCK,STOPPED); - builder = builder.addTransition(STOPPED,CHECKLOCK,STOPPED); - - builder = builder.addTransition(CONFIGURING,SUCCESS,CONFIGURED); - builder = builder.addTransition(CONFIGURING,FAILURE,ERROR); - - builder = builder.addTransition(TESTING,SUCCESS,TESTED); - builder = builder.addTransition(TESTING,FAILURE,ERROR); - - builder = builder.addTransition(RESTARTING,SUCCESS,RUNNING); - builder = builder.addTransition(RESTARTING,FAILURE,ERROR); - - builder = builder.addTransition(STARTING,SUCCESS,RUNNING); - builder = builder.addTransition(STARTING,FAILURE,ERROR); - - builder = builder.addTransition(TERMINATING,SUCCESS,NOT_INSTANTIATED); - builder = builder.addTransition(TERMINATING,FAILURE,ERROR); - - builder = builder.addTransition(REBUILDING,SUCCESS,RUNNING); - builder = builder.addTransition(REBUILDING,FAILURE,ERROR); - - builder = builder.addTransition(STOPPING,SUCCESS,STOPPED); - builder = builder.addTransition(STOPPING,FAILURE,ERROR); - - builder = builder.addTransition(BACKING_UP,SUCCESS,RUNNING); - builder = builder.addTransition(BACKING_UP,FAILURE,ERROR); - - builder = builder.addTransition(SNAPSHOTTING,SUCCESS,RUNNING); - builder = builder.addTransition(SNAPSHOTTING,FAILURE,ERROR); - - builder = builder.addTransition(SOFTWARE_UPLOADING,SUCCESS,RUNNING); - builder = builder.addTransition(SOFTWARE_UPLOADING,FAILURE,ERROR); - - builder = builder.addTransition(UPGRADING,SUCCESS,RUNNING); - builder = builder.addTransition(UPGRADING,FAILURE,ERROR); - - builder = builder.addTransition(ROLLBACKING,SUCCESS,RUNNING); - builder = builder.addTransition(ROLLBACKING,FAILURE,ERROR); - - builder = builder.addTransition(MIGRATING,SUCCESS,RUNNING); - builder = builder.addTransition(MIGRATING,FAILURE,ERROR); - - builder = builder.addTransition(EVACUATING,SUCCESS,RUNNING); - builder = builder.addTransition(EVACUATING,FAILURE,ERROR); - - - builder = builder.addTransition(CONFIGURED,START_APPLICATION,STARTING); - builder = builder.addTransition(TESTED,START_APPLICATION,STARTING); - builder = builder.addTransition(ERROR,START_APPLICATION,STARTING); - builder = builder.addTransition(UNKNOWN,START_APPLICATION,STARTING); - builder = builder.addTransition(RUNNING,START_APPLICATION,STARTING); - - return builder.build(); - - } + State notInstantiated = new State(VNFStates.Not_Instantiated.toString()); + State instantiated = new State(VNFStates.Instantiated.toString()); + State configuring = new State(VNFStates.Configuring.toString()); + State configured = new State(VNFStates.Configured.toString()); + State testing = new State(VNFStates.Testing.toString()); + State tested = new State(VNFStates.Tested.toString()); + State rebuilding = new State(VNFStates.Rebuilding.toString()); + State restarting = new State(VNFStates.Restarting.toString()); + State starting = new State(VNFStates.Starting.toString()); + State error = new State(VNFStates.Error.toString()); + State running = new State(VNFStates.Running.toString()); + State unknown = new State(VNFStates.Unknown.toString()); + State terminating = new State(VNFStates.Terminating.toString()); + State stopping = new State(VNFStates.Stopping.toString()); + State stopped = new State(VNFStates.Stopped.toString()); + State notOrchestrated = new State(VNFStates.NOT_ORCHESTRATED.toString()); + + State backingUp = new State(VNFStates.Backing_Up.toString()); + State snapshotting = new State(VNFStates.Snapshotting.toString()); + State softwareUploading = new State(VNFStates.Software_Uploading.toString()); + State upgrading = new State(VNFStates.Upgrading.toString()); + State rollbacking = new State(VNFStates.Rollbacking.toString()); + + State migrating = new State(VNFStates.Migrating.toString()); + State evacuating = new State(VNFStates.Evacuating.toString()); + State created= new State(VNFStates.Created.toString()); + + Event startApplication = new Event(VNFOperation.StartApplication.toString()); + Event configure = new Event(VNFOperation.Configure.toString()); + Event healthcheck = new Event(VNFOperation.HealthCheck.toString()); + Event test = new Event(VNFOperation.Test.toString()); + Event start = new Event(VNFOperation.Start.toString()); + Event terminate = new Event(VNFOperation.Terminate.toString()); + Event restart = new Event(VNFOperation.Restart.toString()); + Event rebuild = new Event(VNFOperation.Rebuild.toString()); + Event stop = new Event(VNFOperation.Stop.toString()); + Event configModify = new Event(VNFOperation.ConfigModify.toString()); + Event configScaleout = new Event(VNFOperation.ConfigScaleOut.toString()); + Event configRestore = new Event(VNFOperation.ConfigRestore.toString()); + Event backup = new Event(VNFOperation.Backup.toString()); + Event snapshot = new Event(VNFOperation.Snapshot.toString()); + Event softwareUpload = new Event(VNFOperation.SoftwareUpload.toString()); + Event liveUpgrade = new Event(VNFOperation.LiveUpgrade.toString()); + Event rollback = new Event(VNFOperation.Rollback.toString()); + Event sync = new Event(VNFOperation.Sync.toString()); + Event audit = new Event(VNFOperation.Audit.toString()); + Event migrate = new Event(VNFOperation.Migrate.toString()); + Event evacuate = new Event(VNFOperation.Evacuate.toString()); + Event configBackup = new Event(VNFOperation.ConfigBackup.toString()); + Event configBackupDelete = new Event(VNFOperation.ConfigBackupDelete.toString()); + Event configExport = new Event(VNFOperation.ConfigExport.toString()); + Event stopApplication= new Event(VNFOperation.StopApplication.toString()); + + Event lock = new Event(VNFOperation.Lock.toString()); + Event unlock = new Event(VNFOperation.Unlock.toString()); + Event checklock = new Event(VNFOperation.CheckLock.toString()); + + Event success = new Event(VNFOperationOutcome.SUCCESS.toString()); + Event failure = new Event(VNFOperationOutcome.FAILURE.toString()); + + + StateMachineMetadata.StateMachineMetadataBuilder builder = + new StateMachineMetadata.StateMachineMetadataBuilder(); + + builder = builder.addState(notInstantiated); + builder = builder.addState(instantiated); + builder = builder.addState(configuring); + builder = builder.addState(configured); + builder = builder.addState(testing); + builder = builder.addState(tested); + builder = builder.addState(rebuilding); + builder = builder.addState(restarting); + builder = builder.addState(starting); + builder = builder.addState(error); + builder = builder.addState(running); + builder = builder.addState(unknown); + builder = builder.addState(terminating); + builder = builder.addState(stopping); + builder = builder.addState(stopped); + + builder = builder.addState(backingUp); + builder = builder.addState(snapshotting); + builder = builder.addState(softwareUploading); + builder = builder.addState(upgrading); + builder = builder.addState(rollbacking); + builder = builder.addState(migrating); + builder = builder.addState(evacuating); + builder = builder.addState(notOrchestrated); + builder = builder.addState(created); + builder = builder.addEvent(startApplication); + builder = builder.addEvent(configure); + builder = builder.addEvent(test); + builder = builder.addEvent(start); + builder = builder.addEvent(terminate); + builder = builder.addEvent(restart); + builder = builder.addEvent(rebuild); + builder = builder.addEvent(success); + builder = builder.addEvent(failure); + builder = builder.addEvent(stop); + builder = builder.addEvent(configModify); + builder = builder.addEvent(configScaleout); + builder = builder.addEvent(configRestore); + builder = builder.addEvent(healthcheck); + builder = builder.addEvent(backup); + builder = builder.addEvent(snapshot); + builder = builder.addEvent(softwareUpload); + builder = builder.addEvent(liveUpgrade); + builder = builder.addEvent(rollback); + builder = builder.addEvent(sync); + builder = builder.addEvent(audit); + builder = builder.addEvent(migrate); + builder = builder.addEvent(evacuate); + builder = builder.addEvent(lock); + builder = builder.addEvent(unlock); + builder = builder.addEvent(checklock); + builder = builder.addEvent(configBackup); + builder = builder.addEvent(configBackupDelete); + builder = builder.addEvent(configExport); + builder = builder.addEvent(stopApplication); + + builder = builder.addTransition(notOrchestrated,configure,configuring); + builder = builder.addTransition(notOrchestrated,test,testing); + builder = builder.addTransition(notOrchestrated,start,starting); + builder = builder.addTransition(notOrchestrated,terminate,terminating); + builder = builder.addTransition(notOrchestrated,restart,restarting); + builder = builder.addTransition(notOrchestrated,rebuild,rebuilding); + builder = builder.addTransition(notOrchestrated,stop,stopping); + builder = builder.addTransition(notOrchestrated,configModify,configuring); + builder = builder.addTransition(notOrchestrated,configScaleout,configuring); + builder = builder.addTransition(notOrchestrated,configRestore,configuring); + builder = builder.addTransition(notOrchestrated,healthcheck,testing); + builder = builder.addTransition(notOrchestrated,backup,backingUp); + builder = builder.addTransition(notOrchestrated,snapshot,snapshotting); + builder = builder.addTransition(notOrchestrated,softwareUpload,softwareUploading); + builder = builder.addTransition(notOrchestrated,liveUpgrade,upgrading); + builder = builder.addTransition(notOrchestrated,rollback,rollbacking); + builder = builder.addTransition(notOrchestrated,migrate,migrating); + builder = builder.addTransition(notOrchestrated,evacuate,evacuating); + builder = builder.addTransition(notOrchestrated,lock,notOrchestrated); + builder = builder.addTransition(notOrchestrated,unlock,notOrchestrated); + builder = builder.addTransition(notOrchestrated,checklock,notOrchestrated); + builder = builder.addTransition(notOrchestrated,startApplication,starting); + builder = builder.addTransition(notOrchestrated,stopApplication,stopping); + builder = builder.addTransition(notOrchestrated,configBackup,notOrchestrated); + + builder = builder.addTransition(created,configure,configuring); + builder = builder.addTransition(created,test,testing); + builder = builder.addTransition(created,start,starting); + builder = builder.addTransition(created,terminate,terminating); + builder = builder.addTransition(created,restart,restarting); + builder = builder.addTransition(created,rebuild,rebuilding); + builder = builder.addTransition(created,stop,stopping); + builder = builder.addTransition(created,configModify,configuring); + builder = builder.addTransition(created,configScaleout,configuring); + builder = builder.addTransition(created,configRestore,configuring); + builder = builder.addTransition(created,healthcheck,testing); + builder = builder.addTransition(created,backup,backingUp); + builder = builder.addTransition(created,snapshot,snapshotting); + builder = builder.addTransition(created,softwareUpload,softwareUploading); + builder = builder.addTransition(created,liveUpgrade,upgrading); + builder = builder.addTransition(created,rollback,rollbacking); + builder = builder.addTransition(created,migrate,migrating); + builder = builder.addTransition(created,evacuate,evacuating); + builder = builder.addTransition(created,lock,created); + builder = builder.addTransition(created,unlock,created); + builder = builder.addTransition(created,checklock,created); + builder = builder.addTransition(created,startApplication,starting); + builder = builder.addTransition(created,stopApplication,stopping); + builder = builder.addTransition(created,configBackup,created); + + builder = builder.addTransition(instantiated,configure,configuring); + builder = builder.addTransition(instantiated,test,testing); + builder = builder.addTransition(instantiated,start,starting); + builder = builder.addTransition(instantiated,terminate,terminating); + builder = builder.addTransition(instantiated,restart,restarting); + builder = builder.addTransition(instantiated,rebuild,rebuilding); + builder = builder.addTransition(instantiated,stop,stopping); + builder = builder.addTransition(instantiated,configModify,configuring); + builder = builder.addTransition(instantiated,configScaleout,configuring); + builder = builder.addTransition(instantiated,configRestore,configuring); + builder = builder.addTransition(instantiated,healthcheck,testing); + builder = builder.addTransition(instantiated,backup,backingUp); + builder = builder.addTransition(instantiated,snapshot,snapshotting); + builder = builder.addTransition(instantiated,softwareUpload,softwareUploading); + builder = builder.addTransition(instantiated,liveUpgrade,upgrading); + builder = builder.addTransition(instantiated,rollback,rollbacking); + builder = builder.addTransition(instantiated,migrate,migrating); + builder = builder.addTransition(instantiated,evacuate,evacuating); + builder = builder.addTransition(instantiated,lock,instantiated); + builder = builder.addTransition(instantiated,unlock,instantiated); + builder = builder.addTransition(instantiated,checklock,instantiated); + + builder = builder.addTransition(configured,configure,configuring); + builder = builder.addTransition(configured,test,testing); + builder = builder.addTransition(configured,start,starting); + builder = builder.addTransition(configured,terminate,terminating); + builder = builder.addTransition(configured,restart,restarting); + builder = builder.addTransition(configured,rebuild,rebuilding); + builder = builder.addTransition(configured,stop,stopping); + builder = builder.addTransition(configured,configModify,configuring); + builder = builder.addTransition(configured,configScaleout,configuring); + builder = builder.addTransition(configured,configRestore,configuring); + builder = builder.addTransition(configured,healthcheck,testing); + builder = builder.addTransition(configured,backup,backingUp); + builder = builder.addTransition(configured,snapshot,snapshotting); + builder = builder.addTransition(configured,softwareUpload,softwareUploading); + builder = builder.addTransition(configured,liveUpgrade,upgrading); + builder = builder.addTransition(configured,rollback,rollbacking); + builder = builder.addTransition(configured,sync,configured); + builder = builder.addTransition(configured,audit,configured); + builder = builder.addTransition(configured,migrate,migrating); + builder = builder.addTransition(configured,evacuate,evacuating); + builder = builder.addTransition(configured,lock,configured); + builder = builder.addTransition(configured,unlock,configured); + builder = builder.addTransition(configured,checklock,configured); + builder = builder.addTransition(configured,configBackup,configured); + builder = builder.addTransition(configured,configBackupDelete,configured); + builder = builder.addTransition(configured,configExport,configured); + builder = builder.addTransition(configured,stopApplication,stopping); + + builder = builder.addTransition(tested,configure,configuring); + builder = builder.addTransition(tested,test,testing); + builder = builder.addTransition(tested,start,starting); + builder = builder.addTransition(tested,terminate,terminating); + builder = builder.addTransition(tested,restart,restarting); + builder = builder.addTransition(tested,rebuild,rebuilding); + builder = builder.addTransition(tested,stop,stopping); + builder = builder.addTransition(tested,configModify,configuring); + builder = builder.addTransition(tested,configScaleout,configuring); + builder = builder.addTransition(tested,configRestore,configuring); + builder = builder.addTransition(tested,healthcheck,testing); + builder = builder.addTransition(tested,backup,backingUp); + builder = builder.addTransition(tested,snapshot,snapshotting); + builder = builder.addTransition(tested,softwareUpload,softwareUploading); + builder = builder.addTransition(tested,liveUpgrade,upgrading); + builder = builder.addTransition(tested,rollback,rollbacking); + builder = builder.addTransition(tested,sync,tested); + builder = builder.addTransition(tested,audit,tested); + builder = builder.addTransition(tested,migrate,migrating); + builder = builder.addTransition(tested,evacuate,evacuating); + builder = builder.addTransition(tested,lock,tested); + builder = builder.addTransition(tested,unlock,tested); + builder = builder.addTransition(tested,checklock,tested); + builder = builder.addTransition(tested,configBackup,tested); + builder = builder.addTransition(tested,configBackupDelete,tested); + builder = builder.addTransition(tested,configExport,tested); + builder = builder.addTransition(tested,stopApplication,stopping); + + builder = builder.addTransition(running,configure,configuring); + builder = builder.addTransition(running,test,testing); + builder = builder.addTransition(running,start,starting); + builder = builder.addTransition(running,terminate,terminating); + builder = builder.addTransition(running,restart,restarting); + builder = builder.addTransition(running,rebuild,rebuilding); + builder = builder.addTransition(running,stop,stopping); + builder = builder.addTransition(running,configModify,configuring); + builder = builder.addTransition(running,configScaleout,configuring); + builder = builder.addTransition(running,configRestore,configuring); + builder = builder.addTransition(running,healthcheck,testing); + builder = builder.addTransition(running,backup,backingUp); + builder = builder.addTransition(running,snapshot,snapshotting); + builder = builder.addTransition(running,softwareUpload,softwareUploading); + builder = builder.addTransition(running,liveUpgrade,upgrading); + builder = builder.addTransition(running,rollback,rollbacking); + builder = builder.addTransition(running,sync,running); + builder = builder.addTransition(running,audit,running); + builder = builder.addTransition(running,migrate,migrating); + builder = builder.addTransition(running,evacuate,evacuating); + builder = builder.addTransition(running,lock,running); + builder = builder.addTransition(running,unlock,running); + builder = builder.addTransition(running,checklock,running); + builder = builder.addTransition(running,configBackup,running); + builder = builder.addTransition(running,configBackupDelete,running); + builder = builder.addTransition(running,configExport,running); + builder = builder.addTransition(running,stopApplication,stopping); + + builder = builder.addTransition(error,configure,configuring); + builder = builder.addTransition(error,test,testing); + builder = builder.addTransition(error,start,starting); + builder = builder.addTransition(error,terminate,terminating); + builder = builder.addTransition(error,restart,restarting); + builder = builder.addTransition(error,rebuild,rebuilding); + builder = builder.addTransition(error,stop,stopping); + builder = builder.addTransition(error,configModify,configuring); + builder = builder.addTransition(error,configScaleout,configuring); + builder = builder.addTransition(error,configRestore,configuring); + builder = builder.addTransition(error,healthcheck,testing); + builder = builder.addTransition(error,backup,backingUp); + builder = builder.addTransition(error,snapshot,snapshotting); + builder = builder.addTransition(error,softwareUpload,softwareUploading); + builder = builder.addTransition(error,liveUpgrade,upgrading); + builder = builder.addTransition(error,rollback,rollbacking); + builder = builder.addTransition(error,sync,error); + builder = builder.addTransition(error,audit,error); + builder = builder.addTransition(error,migrate,migrating); + builder = builder.addTransition(error,evacuate,evacuating); + builder = builder.addTransition(error,lock,error); + builder = builder.addTransition(error,unlock,error); + builder = builder.addTransition(error,checklock,error); + builder = builder.addTransition(error,configBackup,error); + builder = builder.addTransition(error,configBackupDelete,error); + builder = builder.addTransition(error,configExport,error); + builder = builder.addTransition(error,stopApplication,stopping); + + builder = builder.addTransition(unknown,configure,configuring); + builder = builder.addTransition(unknown,test,testing); + builder = builder.addTransition(unknown,start,starting); + builder = builder.addTransition(unknown,terminate,terminating); + builder = builder.addTransition(unknown,restart,restarting); + builder = builder.addTransition(unknown,rebuild,rebuilding); + builder = builder.addTransition(unknown,stop,stopping); + builder = builder.addTransition(unknown,configModify,configuring); + builder = builder.addTransition(unknown,configScaleout,configuring); + builder = builder.addTransition(unknown,configRestore,configuring); + builder = builder.addTransition(unknown,healthcheck,testing); + builder = builder.addTransition(unknown,backup,backingUp); + builder = builder.addTransition(unknown,snapshot,snapshotting); + builder = builder.addTransition(unknown,softwareUpload,softwareUploading); + builder = builder.addTransition(unknown,liveUpgrade,upgrading); + builder = builder.addTransition(unknown,rollback,rollbacking); + builder = builder.addTransition(unknown,sync,unknown); + builder = builder.addTransition(unknown,audit,unknown); + builder = builder.addTransition(unknown,migrate,migrating); + builder = builder.addTransition(unknown,evacuate,evacuating); + builder = builder.addTransition(unknown,lock,unknown); + builder = builder.addTransition(unknown,unlock,unknown); + builder = builder.addTransition(unknown,checklock,unknown); + builder = builder.addTransition(unknown,configBackup,unknown); + builder = builder.addTransition(unknown,configBackupDelete,unknown); + builder = builder.addTransition(unknown,configExport,unknown); + builder = builder.addTransition(unknown,stopApplication,stopping); + + builder = builder.addTransition(stopped,configure,configuring); + builder = builder.addTransition(stopped,test,testing); + builder = builder.addTransition(stopped,start,starting); + builder = builder.addTransition(stopped,terminate,terminating); + builder = builder.addTransition(stopped,restart,restarting); + builder = builder.addTransition(stopped,rebuild,rebuilding); + builder = builder.addTransition(stopped,configModify,configuring); + builder = builder.addTransition(stopped,configScaleout,configuring); + builder = builder.addTransition(stopped,configRestore,configuring); + builder = builder.addTransition(stopped,healthcheck,testing); + builder = builder.addTransition(stopped,backup,backingUp); + builder = builder.addTransition(stopped,snapshot,snapshotting); + builder = builder.addTransition(stopped,softwareUpload,softwareUploading); + builder = builder.addTransition(stopped,liveUpgrade,upgrading); + builder = builder.addTransition(stopped,rollback,rollbacking); + builder = builder.addTransition(stopped,migrate,migrating); + builder = builder.addTransition(stopped,evacuate,evacuating); + builder = builder.addTransition(stopped,lock,stopped); + builder = builder.addTransition(stopped,unlock,stopped); + builder = builder.addTransition(stopped,checklock,stopped); + + builder = builder.addTransition(configuring,success,configured); + builder = builder.addTransition(configuring,failure,error); + + builder = builder.addTransition(testing,success,tested); + builder = builder.addTransition(testing,failure,error); + + builder = builder.addTransition(restarting,success,running); + builder = builder.addTransition(restarting,failure,error); + + builder = builder.addTransition(starting,success,running); + builder = builder.addTransition(starting,failure,error); + + builder = builder.addTransition(terminating,success,notInstantiated); + builder = builder.addTransition(terminating,failure,error); + + builder = builder.addTransition(rebuilding,success,running); + builder = builder.addTransition(rebuilding,failure,error); + + builder = builder.addTransition(stopping,success,stopped); + builder = builder.addTransition(stopping,failure,error); + + builder = builder.addTransition(backingUp,success,running); + builder = builder.addTransition(backingUp,failure,error); + + builder = builder.addTransition(snapshotting,success,running); + builder = builder.addTransition(snapshotting,failure,error); + + builder = builder.addTransition(softwareUploading,success,running); + builder = builder.addTransition(softwareUploading,failure,error); + + builder = builder.addTransition(upgrading,success,running); + builder = builder.addTransition(upgrading,failure,error); + + builder = builder.addTransition(rollbacking,success,running); + builder = builder.addTransition(rollbacking,failure,error); + + builder = builder.addTransition(migrating,success,running); + builder = builder.addTransition(migrating,failure,error); + + builder = builder.addTransition(evacuating,success,running); + builder = builder.addTransition(evacuating,failure,error); + + + builder = builder.addTransition(configured,startApplication,starting); + builder = builder.addTransition(tested,startApplication,starting); + builder = builder.addTransition(error,startApplication,starting); + builder = builder.addTransition(unknown,startApplication,starting); + builder = builder.addTransition(running,startApplication,starting); + + return builder.build(); } } diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Event.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Event.java index 33de6077d..c6e5fcb6c 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Event.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Event.java @@ -24,21 +24,28 @@ package org.openecomp.appc.statemachine.objects; +/** + * Event Object + */ public class Event{ + private final String eventName; + private final int hashCode; - private String eventName; - - private Event(){ - // do nothing + /** + * Constructor + * @param eventName String of the event name + */ + public Event(String eventName) { + this.eventName = eventName; + this.hashCode = this.eventName.toLowerCase().hashCode(); } @Override - public int hashCode(){ - return this.eventName.hashCode(); + public int hashCode() { + return hashCode; } - @Override - public boolean equals(Object obj){ + public boolean equals(Object obj) { if(obj == null){ return false; } @@ -46,15 +53,10 @@ public class Event{ return false; } Event event = (Event)obj; - return this.eventName.equals(event.getEventName()); - } - - public Event(String eventName){ - this(); - this.eventName = eventName; + return this.eventName.equalsIgnoreCase(event.getEventName()); } - private String getEventName() { + public String getEventName() { return eventName; } diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Response.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Response.java index 36201204f..283bbfba4 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Response.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Response.java @@ -24,8 +24,15 @@ package org.openecomp.appc.statemachine.objects; +/** + * Response object + */ public enum Response { - NO_TRANSITION_DEFINED,NO_STATE_CHANGE,VALID_TRANSITION; + NO_TRANSITION_DEFINED, + NO_STATE_CHANGE, + VALID_TRANSITION; + + @Override public String toString(){ return this.name(); } diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/State.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/State.java index 8dc8c3ccf..20d3c59e2 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/State.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/State.java @@ -27,42 +27,46 @@ package org.openecomp.appc.statemachine.objects; import java.util.ArrayList; import java.util.List; -public class State{ - private String stateName; - private List<Transition> transitions; - - private State(){ - // do nothing - } +/** + * State Object + */ +public class State { + private final String stateName; + private final int hashCode; + private final List<Transition> transitions; - public State(String state){ - this(); - this.stateName = state; + /** + * Constructor + * @param stateName String of the state name + */ + public State(String stateName) { + this.stateName = stateName; + this.hashCode = stateName.toLowerCase().hashCode(); this.transitions = new ArrayList<>(); } @Override - public int hashCode(){ - return this.stateName.hashCode(); + public int hashCode() { + return hashCode; } @Override - public boolean equals(Object obj){ - if(obj == null){ + public boolean equals(Object obj) { + if (obj == null) { return false; } - if(!(obj instanceof State)){ + if (!(obj instanceof State)) { return false; } State state = (State)obj; return this.stateName.equalsIgnoreCase(state.getStateName()); } - public String getStateName(){ + public String getStateName() { return stateName; } - void addTransition(Transition transition){ + void addTransition(Transition transition) { this.transitions.add(transition); } @@ -71,7 +75,7 @@ public class State{ } @Override - public String toString(){ + public String toString() { return this.stateName; } } diff --git a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Transition.java b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Transition.java index d777ef8a5..5bdf64980 100644 --- a/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Transition.java +++ b/appc-lifecycle-management/state-machine-lib/src/main/java/org/openecomp/appc/statemachine/objects/Transition.java @@ -24,16 +24,19 @@ package org.openecomp.appc.statemachine.objects; +/** + * Transition Object + */ public class Transition { private Event event; private State nextState; - private Transition(){ - // do nothing - } - - Transition(Event event, State nextState){ - this(); + /** + * Constructor + * @param event which triggers the transition + * @param nextState of State which indicates the transition targeted state + */ + Transition(Event event, State nextState) { this.event = event; this.nextState = nextState; } diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/StateMachineFactoryTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/StateMachineFactoryTest.java new file mode 100644 index 000000000..f75e04d6a --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/StateMachineFactoryTest.java @@ -0,0 +1,59 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.impl; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openecomp.appc.statemachine.StateMachine; +import org.openecomp.appc.statemachine.objects.Event; +import org.openecomp.appc.statemachine.objects.State; +import org.openecomp.appc.statemachine.objects.StateMachineMetadata; + +public class StateMachineFactoryTest { + private StateMachineMetadata metadata; + + @Before + public void setUp() throws Exception { + StateMachineMetadata.StateMachineMetadataBuilder builder = + new StateMachineMetadata.StateMachineMetadataBuilder(); + builder.addEvent(new Event("TestingEvent1")); + builder.addEvent(new Event("TestingEvent2")); + builder.addState(new State("TestingState1")); + builder.addState(new State("TestingState2")); + builder.addState(new State("TestingState3")); + builder.addTransition( + new State("TestingState1"), new Event("TestingEvent1"), new State("TestingState2")); + + metadata = builder.build(); + } + + @Test + public void testGetStateMachine() throws Exception { + StateMachine stateMachine = StateMachineFactory.getStateMachine(metadata); + Assert.assertTrue("Should return StateMachineImpl", stateMachine instanceof StateMachineImpl); + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/StateMachineImplTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/StateMachineImplTest.java new file mode 100644 index 000000000..16a489aca --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/StateMachineImplTest.java @@ -0,0 +1,107 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.impl; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.internal.util.reflection.Whitebox; +import org.openecomp.appc.exceptions.InvalidInputException; +import org.openecomp.appc.statemachine.objects.Event; +import org.openecomp.appc.statemachine.objects.Response; +import org.openecomp.appc.statemachine.objects.State; +import org.openecomp.appc.statemachine.objects.StateMachineMetadata; +import org.openecomp.appc.statemachine.objects.StateMachineResponse; + +public class StateMachineImplTest { + private StateMachineMetadata metadata; + private StateMachineImpl stateMachine; + + private State state1 = new State("TestingState1"); + private State state2 = new State("TestingState2"); + private Event event1 = new Event("TestingEvent1"); + private Event event2 = new Event("TestingEvent2"); + + @Before + public void setUp() throws Exception { + StateMachineMetadata.StateMachineMetadataBuilder builder = + new StateMachineMetadata.StateMachineMetadataBuilder(); + builder.addEvent(event1); + builder.addEvent(event2); + builder.addState(state1); + builder.addState(state2); + builder.addState(new State("TestingState3")); + builder.addTransition(state1, event1, state2); + + metadata = builder.build(); + + stateMachine = new StateMachineImpl(metadata); + } + + @Test + public void testConstructor() throws Exception { + StateMachineImpl stateMachine = new StateMachineImpl(metadata); + Assert.assertEquals("Should have set internal states", + metadata.getStates(), Whitebox.getInternalState(stateMachine, "states")); + Assert.assertEquals("Should have set internal events", + metadata.getEvents(), Whitebox.getInternalState(stateMachine, "events")); + } + + @Test(expected = InvalidInputException.class) + public void testHandleEventThrowsInvalidInputException() throws Exception { + stateMachine.handleEvent(null, null); + } + + @Test + public void testHandleEvent() throws Exception { + StateMachineResponse response = stateMachine.handleEvent(state1, event1); + Assert.assertEquals(Response.VALID_TRANSITION, response.getResponse()); + Assert.assertEquals(state2, response.getNextState()); + + response = stateMachine.handleEvent(state2, event1); + Assert.assertEquals(Response.NO_TRANSITION_DEFINED, response.getResponse()); + Assert.assertTrue(response.getNextState() == null); + } + + @Test + public void testValidateInputs() { + Assert.assertFalse(stateMachine.validateInputs(null, null)); + Assert.assertFalse(stateMachine.validateInputs(new State("state1"), null)); + Assert.assertFalse(stateMachine.validateInputs(null, new Event("event1"))); + Assert.assertFalse(stateMachine.validateInputs(new State("state1"), new Event("event1"))); + Assert.assertFalse(stateMachine.validateInputs(state1, new Event("event1"))); + Assert.assertFalse(stateMachine.validateInputs(new State("state1"), event1)); + Assert.assertTrue(stateMachine.validateInputs(state1, event1)); + + } + + @Test + public void testToString() throws Exception { + Assert.assertEquals( + String.format(stateMachine.toStringFormat, metadata.getStates(), metadata.getEvents()), + stateMachine.toString()); + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/readers/AppcOamMetaDataReaderTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/readers/AppcOamMetaDataReaderTest.java new file mode 100644 index 000000000..6073caa52 --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/readers/AppcOamMetaDataReaderTest.java @@ -0,0 +1,74 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.impl.readers; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openecomp.appc.statemachine.objects.Event; +import org.openecomp.appc.statemachine.objects.State; +import org.openecomp.appc.statemachine.objects.StateMachineMetadata; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +public class AppcOamMetaDataReaderTest { + private List<String> expectedStateNames = new ArrayList<>(); + private List<String> expectedEventNames = new ArrayList<>(); + + private StateMachineMetadata stateMachineMetadata = new AppcOamMetaDataReader().readMetadata(); + + @Before + public void setUp() throws Exception { + for (AppcOamStates appcOamStates : AppcOamStates.values()) { + expectedStateNames.add(appcOamStates.toString()); + } + for (AppcOamMetaDataReader.AppcOperation appcOperation : AppcOamMetaDataReader.AppcOperation.values()) { + expectedEventNames.add(appcOperation.toString()); + } + } + + @Test + public void testReadMetadataForState() throws Exception { + Set<State> stateSet = stateMachineMetadata.getStates(); + for (State state : stateSet) { + String eventName = state.getStateName(); + Assert.assertTrue(String.format("Event(%s) should exist in expectedEventNames", eventName), + expectedStateNames.contains(eventName)); + } + } + + @Test + public void testReadMetadataForEvent() throws Exception { + Set<Event> eventSet = stateMachineMetadata.getEvents(); + for (Event event : eventSet) { + String eventName = event.getEventName(); + Assert.assertTrue(String.format("Event(%s) should exist in expectedEventNames", eventName), + expectedEventNames.contains(eventName)); + } + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/readers/VnfMetaDataReaderTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/readers/VnfMetaDataReaderTest.java new file mode 100644 index 000000000..b8b623f12 --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/impl/readers/VnfMetaDataReaderTest.java @@ -0,0 +1,79 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.impl.readers; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openecomp.appc.lifecyclemanager.objects.VNFOperationOutcome; +import org.openecomp.appc.statemachine.objects.Event; +import org.openecomp.appc.statemachine.objects.State; +import org.openecomp.appc.statemachine.objects.StateMachineMetadata; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + + +public class VnfMetaDataReaderTest { + private List<String> expectedStateNames = new ArrayList<>(); + private List<String> expectedEventNames = new ArrayList<>(); + + private StateMachineMetadata stateMachineMetadata = new VnfMetaDataReader().readMetadata(); + + @Before + public void setUp() throws Exception { + for (VnfMetaDataReader.VNFStates vnfStates : VnfMetaDataReader.VNFStates.values()) { + expectedStateNames.add(vnfStates.toString()); + } + for (VnfMetaDataReader.VNFOperation vnfOperation : VnfMetaDataReader.VNFOperation.values()) { + expectedEventNames.add(vnfOperation.toString()); + } + for (VNFOperationOutcome vnfOperationOutcome : VNFOperationOutcome.values()) { + expectedEventNames.add(vnfOperationOutcome.toString()); + } + } + + @Test + public void testReadMetadataForState() throws Exception { + Set<State> stateSet = stateMachineMetadata.getStates(); + for (State state : stateSet) { + String eventName = state.getStateName(); + Assert.assertTrue(String.format("Event(%s) should exist in expectedEventNames", eventName), + expectedStateNames.contains(eventName)); + } + } + + @Test + public void testReadMetadataForEvent() throws Exception { + Set<Event> eventSet = stateMachineMetadata.getEvents(); + for (Event event : eventSet) { + String eventName = event.getEventName(); + Assert.assertTrue(String.format("Event(%s) should exist in expectedEventNames", eventName), + expectedEventNames.contains(eventName)); + } + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/EventTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/EventTest.java new file mode 100644 index 000000000..e646bd260 --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/EventTest.java @@ -0,0 +1,70 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.objects; + +import org.junit.Assert; +import org.junit.Test; +import org.mockito.internal.util.reflection.Whitebox; + +public class EventTest { + private final String EVENT_NAME = "Testing Event"; + private Event event = new Event(EVENT_NAME); + + @Test + public void testConstructor() { + Event event = new Event(EVENT_NAME); + Assert.assertEquals("Should set eventName", + EVENT_NAME, Whitebox.getInternalState(event, "eventName")); + Assert.assertEquals("Should set hash code", + EVENT_NAME.toLowerCase().hashCode(), (int)Whitebox.getInternalState(event, "hashCode")); + } + + @Test + public void testHashCode() throws Exception { + Assert.assertEquals("Should return proper hash code", + EVENT_NAME.toLowerCase().hashCode(), event.hashCode()); + } + + @Test + public void testEquals() throws Exception { + Assert.assertFalse("should return false for null", event.equals(null)); + Assert.assertFalse("should return false for object", event.equals(new State(EVENT_NAME))); + Assert.assertFalse("should return false for different event", + event.equals(new Event("Another"))); + Assert.assertTrue("should return true", event.equals(new Event(EVENT_NAME))); + Assert.assertTrue("should return true (lower case)", event.equals(new Event(EVENT_NAME.toLowerCase()))); + } + + @Test + public void testGetEventName() throws Exception { + Assert.assertEquals("Should return EVENT_NAME", EVENT_NAME, event.getEventName()); + } + + @Test + public void testToString() throws Exception { + Assert.assertEquals("Should return EVENT_NAME", EVENT_NAME, event.toString()); + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/ResponseTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/ResponseTest.java new file mode 100644 index 000000000..b9f955f0d --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/ResponseTest.java @@ -0,0 +1,40 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.objects; + +import org.junit.Assert; +import org.junit.Test; + +public class ResponseTest { + + @Test + public void testToString() throws Exception { + for (Response response : Response.values()) { + Assert.assertEquals("Should return the same as name", + response.name(), response.toString()); + } + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateMachineMetadataTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateMachineMetadataTest.java new file mode 100644 index 000000000..96c411061 --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateMachineMetadataTest.java @@ -0,0 +1,61 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.objects; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.internal.util.reflection.Whitebox; + +public class StateMachineMetadataTest { + private StateMachineMetadata.StateMachineMetadataBuilder builder; + private StateMachineMetadata metadata; + @Before + public void setUp() throws Exception { + builder = new StateMachineMetadata.StateMachineMetadataBuilder(); + builder.addEvent(new Event("TestingEvent1")); + builder.addEvent(new Event("TestingEvent2")); + builder.addState(new State("TestingState1")); + builder.addState(new State("TestingState2")); + builder.addState(new State("TestingState3")); + builder.addTransition( + new State("TestingState1"), new Event("TestingEvent1"), new State("TestingState2")); + + metadata = builder.build(); + } + + @Test + public void getStates() throws Exception { + Assert.assertEquals("Should return proper States", + Whitebox.getInternalState(builder, "states"), metadata.getStates()); + } + + @Test + public void getEvents() throws Exception { + Assert.assertEquals("Should return proper Events", + Whitebox.getInternalState(builder, "events"), metadata.getEvents()); + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateMachineResponseTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateMachineResponseTest.java new file mode 100644 index 000000000..c974ea067 --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateMachineResponseTest.java @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.objects; + +import org.junit.Assert; +import org.junit.Test; +import org.mockito.internal.util.reflection.Whitebox; + +public class StateMachineResponseTest { + private StateMachineResponse stateMachineResponse = new StateMachineResponse(); + + @Test + public void testConstructor() { + StateMachineResponse stateMachineResponse = new StateMachineResponse(); + Assert.assertTrue("Do not: no change to nextState", + Whitebox.getInternalState(stateMachineResponse, "nextState") == null); + Assert.assertTrue("Do not: no change to response", + Whitebox.getInternalState(stateMachineResponse, "response") == null); + } + + @Test + public void testGetAndSetNextState() throws Exception { + stateMachineResponse.setNextState(null); + Assert.assertTrue("internal nextState should be null", + Whitebox.getInternalState(stateMachineResponse, "nextState") == null); + Assert.assertTrue("should return null", stateMachineResponse.getNextState() == null); + + State state = new State("TestingState"); + stateMachineResponse.setNextState(state); + Assert.assertEquals("internal nextState should be the state", + state, Whitebox.getInternalState(stateMachineResponse, "nextState")); + Assert.assertEquals("should return the state", state, stateMachineResponse.getNextState()); + } + + @Test + public void testGetAndSetResponse() throws Exception { + stateMachineResponse.setResponse(null); + Assert.assertTrue("internal response should be null", + Whitebox.getInternalState(stateMachineResponse, "response") == null); + Assert.assertTrue("should return null", stateMachineResponse.getResponse() == null); + + Response response = Response.NO_STATE_CHANGE; + stateMachineResponse.setResponse(response); + Assert.assertEquals("internal response should be the response", + response, Whitebox.getInternalState(stateMachineResponse, "response")); + Assert.assertEquals("should return the response", response, stateMachineResponse.getResponse()); + } + +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateTest.java new file mode 100644 index 000000000..4e95d0a90 --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/StateTest.java @@ -0,0 +1,91 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.objects; + +import org.junit.Assert; +import org.junit.Test; +import org.mockito.internal.util.reflection.Whitebox; + +import java.util.List; + +public class StateTest { + private final String STATE_NAME = "Starting"; + private State state = new State(STATE_NAME); + + @SuppressWarnings("unchecked") + @Test + public void testConstructor() { + State state = new State(STATE_NAME); + Assert.assertEquals("Should set stateName", + STATE_NAME, Whitebox.getInternalState(state, "stateName")); + Assert.assertEquals("Should set hash code", + STATE_NAME.toLowerCase().hashCode(), (int)Whitebox.getInternalState(state, "hashCode")); + List<Transition> transitions = (List<Transition>) Whitebox.getInternalState(state, "transitions"); + Assert.assertTrue("Should initialized transtiions", + transitions != null && transitions.isEmpty()); + } + + @Test + public void testHashCode() throws Exception { + Assert.assertEquals("Should return proper hash code", + STATE_NAME.toLowerCase().hashCode(), state.hashCode()); + } + + @Test + public void testEquals() throws Exception { + Assert.assertFalse("should return false for null", state.equals(null)); + Assert.assertFalse("should return false for object", state.equals(new Event(STATE_NAME))); + Assert.assertFalse("should return false for different event", + state.equals(new Event("Another"))); + Assert.assertTrue("should return true", state.equals(new State(STATE_NAME))); + Assert.assertTrue("should return true (lower case)", state.equals(new State(STATE_NAME.toLowerCase()))); + } + + @Test + public void testGetStateName() throws Exception { + Assert.assertEquals("Should return STATE_NAME", STATE_NAME, state.getStateName()); + } + + @SuppressWarnings("unchecked") + @Test + public void testAddAndGetTransition() throws Exception { + Transition transition1 = new Transition(new Event("event1"), new State("state2")); + List<Transition> transitions = (List<Transition>) Whitebox.getInternalState(state, "transitions"); + Assert.assertFalse("should not have transition1", transitions.contains(transition1)); + state.addTransition(transition1); + transitions = (List<Transition>) Whitebox.getInternalState(state, "transitions"); + Assert.assertTrue("should have added transition1", transitions.contains(transition1)); + Assert.assertEquals("Should return transitions", transitions, state.getTransitions()); + + state.addTransition(null); + Assert.assertEquals("Should not change transitions", transitions, + Whitebox.getInternalState(state, "transitions")); + } + + @Test + public void testToString() throws Exception { + Assert.assertEquals("Should return STATE_NAME", STATE_NAME, state.toString()); + } +} diff --git a/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/TransitionTest.java b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/TransitionTest.java new file mode 100644 index 000000000..d948c15e4 --- /dev/null +++ b/appc-lifecycle-management/state-machine-lib/src/test/java/org/openecomp/appc/statemachine/objects/TransitionTest.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.appc.statemachine.objects; + +import org.junit.Assert; +import org.junit.Test; +import org.mockito.internal.util.reflection.Whitebox; + +public class TransitionTest { + private final State state = new State("TestingState"); + private final Event event = new Event("TestingEvent"); + private Transition transition = new Transition(event, state); + + @Test + public void testConstructor() { + transition = new Transition(event, state); + Assert.assertEquals("Should set event", + event, Whitebox.getInternalState(transition, "event")); + Assert.assertEquals("Should set nextState", + state, Whitebox.getInternalState(transition, "nextState")); + } + + @Test + public void testGetEvent() throws Exception { + Assert.assertEquals("Should return internal event", + Whitebox.getInternalState(transition, "event"), transition.getEvent()); + } + + @Test + public void testGetNextState() throws Exception { + Assert.assertEquals("Should return internal nextState", + Whitebox.getInternalState(transition, "nextState"), transition.getNextState()); + } + +} |