Skip to content
Snippets Groups Projects
Commit 602a4076 authored by Jesper Fyhr Knudsen's avatar Jesper Fyhr Knudsen
Browse files

Refactor Agent Socket listener functionality into strategy classes

parent a8ff6d36
Branches
No related tags found
No related merge requests found
Showing
with 695 additions and 466 deletions
......@@ -2,28 +2,19 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="057f0053-f4e8-40ac-9d01-6a2f351d655a" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/AgentProxyTest.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/message/AgentStateMessage.java" />
<change type="MOVED" beforePath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/ConnectMessage.java" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/message/ConnectMessage.java" />
<change type="MOVED" beforePath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/Message.java" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/message/Message.java" />
<change type="MOVED" beforePath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/TaskMessage.java" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/message/TaskMessage.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/AgentAction.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/AgentStateAction.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/action/AgentStateActionTest.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/EnqueueTaskAction.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/ListSupportedPluginsAction.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/PluginFactory.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/PluginFactoryTest.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskStatusChangeListener.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/Agent.java" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/Agent.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/AgentConfigurationMessage.java" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/AgentConfigurationMessage.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/AgentProxy.java" afterPath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/AgentProxy.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-commons/src/test/java/com/chaos/sdk/test/ChaosTest.java" afterPath="$PROJECT_DIR$/octopus-commons/src/test/java/com/chaos/sdk/test/ChaosTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/ClusterState.java" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/ClusterState.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/ConnectSpecification.java" afterPath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/ConnectSpecification.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/AgentTest.java" afterPath="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/AgentTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionHandler.java" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionHandler.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionSlot.java" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionSlot.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/Heartbeat.java" afterPath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/Heartbeat.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-commons/src/test/java/com/chaos/sdk/test/MockGateway.java" afterPath="$PROJECT_DIR$/octopus-commons/src/test/java/com/chaos/sdk/test/MockGateway.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/util/NetworkingUtil.java" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/util/NetworkingUtil.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/OrchestratorImpl.java" afterPath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/OrchestratorImpl.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/OrchestratorProxy.java" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/OrchestratorProxy.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-cli/src/main/java/com/chaos/octopus/Program.java" afterPath="$PROJECT_DIR$/octopus-cli/src/main/java/com/chaos/octopus/Program.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/util/StreamUtilities.java" afterPath="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/util/StreamUtilities.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/TaskCompleteSpecification.java" afterPath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/TaskCompleteSpecification.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/TaskUpdateSpecification.java" afterPath="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/TaskUpdateSpecification.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-server/pom.xml" afterPath="$PROJECT_DIR$/octopus-server/pom.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskCompleteListener.java" afterPath="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskCompleteListener.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list>
<ignored path="parent-project.iws" />
......@@ -56,67 +47,18 @@
<favorites_list name="parent-project" />
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.5">
<split-first>
<leaf>
<file leaf-file-name="Heartbeat.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/Heartbeat.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="27" column="5" selection-start-line="27" selection-start-column="5" selection-end-line="27" selection-end-column="5" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AgentProxy.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/AgentProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="100" column="0" selection-start-line="100" selection-start-column="0" selection-end-line="100" selection-end-column="0" />
<folding>
<element signature="e#1321#1322#0" expanded="true" />
<element signature="e#1355#1356#0" expanded="true" />
<element signature="e#2024#2025#0" expanded="true" />
<element signature="e#2070#2071#0" expanded="true" />
<element signature="e#2753#2754#0" expanded="true" />
<element signature="e#2798#2799#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Agent.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/Agent.java">
<file leaf-file-name="OrchestratorImpl.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/OrchestratorImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.7413914">
<caret line="118" column="51" selection-start-line="118" selection-start-column="51" selection-end-line="118" selection-end-column="51" />
<state vertical-scroll-proportion="0.8590878">
<caret line="135" column="5" selection-start-line="98" selection-start-column="8" selection-end-line="135" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
<leaf>
<file leaf-file-name="AgentProxyTest.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/AgentProxyTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.19395643">
<caret line="12" column="28" selection-start-line="12" selection-start-column="28" selection-end-line="12" selection-end-column="28" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</split-second>
</splitter>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
......@@ -150,8 +92,6 @@
<option value="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/AllocationHandler.java" />
<option value="$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/Synchronization/HeartbeatTest.java" />
<option value="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/util/Commands.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionHandler.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/AgentTest.java" />
<option value="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/ConnectSpecification.java" />
<option value="$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/Heartbeat.java" />
<option value="$PROJECT_DIR$/octopus-server/pom.xml" />
......@@ -166,6 +106,22 @@
<option value="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/message/AgentStateMessage.java" />
<option value="$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/ClusterState.java" />
<option value="$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/AgentProxyTest.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/AgentAction.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/dfas.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskFactory.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/PluginFactory.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/PluginFactoryTest.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/EnqueueTaskAction.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/EnqueueTaskAction.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/ListSupportedPluginsAction.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/AgentAction.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/AgentStateAction.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskCompleteListener.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionSlot.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskStatusChangeListener.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionHandler.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/action/AgentStateActionTest.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/AgentTest.java" />
<option value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/Agent.java" />
</list>
</option>
......@@ -749,6 +705,40 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="parent-project" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="octopus-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="octopus-agent" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="unit" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="action" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="parent-project" />
......@@ -779,6 +769,74 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="parent-project" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="octopus-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="octopus-agent" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="agent" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="plugin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="parent-project" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="octopus-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="octopus-agent" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="agent" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="action" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane" />
......@@ -795,17 +853,21 @@
<property name="OverrideImplement.combined" value="true" />
<property name="OverrideImplement.overriding.sorted" value="false" />
<property name="FullScreen" value="false" />
<property name="last_directory_selection" value="$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent" />
</component>
<component name="RecentsManager">
<key name="CreateClassDialog.RecentsKey">
<recent name="com.chaos.octopus.agent.action" />
<recent name="com.chaos.octopus.agent" />
<recent name="com.chaos.sdk" />
</key>
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="com.chaos.octopus.agent.action" />
<recent name="com.chaos.octopus.commons.core.messages" />
</key>
</component>
<component name="RunManager" selected="JUnit.AgentProxyTest.getState_AgentConnected_ReturnConnectedState">
<configuration default="false" name="AgentTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<component name="RunManager" selected="JUnit.All Tests">
<configuration default="false" name="PluginFactoryTest.addPlugin_Default_PluginIsAddedToSupporedPlugins" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="com.chaos.octopus.agent.unit.*" />
......@@ -816,9 +878,9 @@
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.agent.unit" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.agent.unit.AgentTest" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.agent.unit.PluginFactoryTest" />
<option name="METHOD_NAME" value="addPlugin_Default_PluginIsAddedToSupporedPlugins" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
......@@ -831,19 +893,19 @@
<patterns />
<method />
</configuration>
<configuration default="false" name="AgentProxyTest.getState_AgentNotConnected_ReturnDisconnectedState" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration default="false" name="AgentTest.getState_OneTask_ReturnOneExecutingTask" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="com.chaos.octopus.server.unit.*" />
<option name="PATTERN" value="com.chaos.octopus.agent.unit.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="octopus-server" />
<module name="octopus-agent" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.server.unit" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.server.unit.AgentProxyTest" />
<option name="METHOD_NAME" value="getState_AgentNotConnected_ReturnDisconnectedState" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.agent.unit" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.agent.unit.AgentTest" />
<option name="METHOD_NAME" value="getState_OneTask_ReturnOneExecutingTask" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
......@@ -857,20 +919,20 @@
<patterns />
<method />
</configuration>
<configuration default="false" name="HeartbeatTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration default="false" name="AgentTest.getState_OneExecutingAndOneQueuedTask_ReturnOneExecutingTask" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="com.chaos.octopus.server.unit.Synchronization.*" />
<option name="PATTERN" value="com.chaos.octopus.agent.unit.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="octopus-server" />
<module name="octopus-agent" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.server.unit.Synchronization" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.server.unit.Synchronization.HeartbeatTest" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.agent.unit" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.agent.unit.AgentTest" />
<option name="METHOD_NAME" value="getState_OneExecutingAndOneQueuedTask_ReturnOneExecutingTask" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
......@@ -883,20 +945,20 @@
<patterns />
<method />
</configuration>
<configuration default="false" name="AgentProxyTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration default="false" name="AgentTest.getState_NoTasksQueued_ReturnEmptyState" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="com.chaos.octopus.server.unit.*" />
<option name="PATTERN" value="com.chaos.octopus.agent.unit.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="octopus-server" />
<module name="octopus-agent" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.server.unit" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.server.unit.AgentProxyTest" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.agent.unit" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.agent.unit.AgentTest" />
<option name="METHOD_NAME" value="getState_NoTasksQueued_ReturnEmptyState" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
......@@ -909,20 +971,20 @@
<patterns />
<method />
</configuration>
<configuration default="false" name="AgentProxyTest.getState_AgentConnected_ReturnConnectedState" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<configuration default="false" name="AgentStateActionTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="com.chaos.octopus.server.unit.*" />
<option name="PATTERN" value="com.chaos.octopus.agent.unit.action.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="octopus-server" />
<module name="octopus-agent" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.server.unit" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.server.unit.AgentProxyTest" />
<option name="METHOD_NAME" value="getState_AgentConnected_ReturnConnectedState" />
<option name="TEST_OBJECT" value="method" />
<option name="PACKAGE_NAME" value="com.chaos.octopus.agent.unit.action" />
<option name="MAIN_CLASS_NAME" value="com.chaos.octopus.agent.unit.action.AgentStateActionTest" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
......@@ -1127,19 +1189,19 @@
</configuration>
<list size="6">
<item index="0" class="java.lang.String" itemvalue="JUnit.All Tests" />
<item index="1" class="java.lang.String" itemvalue="JUnit.AgentTest" />
<item index="2" class="java.lang.String" itemvalue="JUnit.AgentProxyTest.getState_AgentNotConnected_ReturnDisconnectedState" />
<item index="3" class="java.lang.String" itemvalue="JUnit.HeartbeatTest" />
<item index="4" class="java.lang.String" itemvalue="JUnit.AgentProxyTest" />
<item index="5" class="java.lang.String" itemvalue="JUnit.AgentProxyTest.getState_AgentConnected_ReturnConnectedState" />
<item index="1" class="java.lang.String" itemvalue="JUnit.PluginFactoryTest.addPlugin_Default_PluginIsAddedToSupporedPlugins" />
<item index="2" class="java.lang.String" itemvalue="JUnit.AgentTest.getState_OneTask_ReturnOneExecutingTask" />
<item index="3" class="java.lang.String" itemvalue="JUnit.AgentTest.getState_OneExecutingAndOneQueuedTask_ReturnOneExecutingTask" />
<item index="4" class="java.lang.String" itemvalue="JUnit.AgentTest.getState_NoTasksQueued_ReturnEmptyState" />
<item index="5" class="java.lang.String" itemvalue="JUnit.AgentStateActionTest" />
</list>
<recent_temporary>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="JUnit.AgentProxyTest.getState_AgentConnected_ReturnConnectedState" />
<item index="1" class="java.lang.String" itemvalue="JUnit.AgentProxyTest" />
<item index="2" class="java.lang.String" itemvalue="JUnit.AgentProxyTest.getState_AgentNotConnected_ReturnDisconnectedState" />
<item index="3" class="java.lang.String" itemvalue="JUnit.HeartbeatTest" />
<item index="4" class="java.lang.String" itemvalue="JUnit.AgentTest" />
<item index="0" class="java.lang.String" itemvalue="JUnit.AgentStateActionTest" />
<item index="1" class="java.lang.String" itemvalue="JUnit.AgentTest.getState_NoTasksQueued_ReturnEmptyState" />
<item index="2" class="java.lang.String" itemvalue="JUnit.AgentTest.getState_OneExecutingAndOneQueuedTask_ReturnOneExecutingTask" />
<item index="3" class="java.lang.String" itemvalue="JUnit.AgentTest.getState_OneTask_ReturnOneExecutingTask" />
<item index="4" class="java.lang.String" itemvalue="JUnit.PluginFactoryTest.addPlugin_Default_PluginIsAddedToSupporedPlugins" />
</list>
</recent_temporary>
</component>
......@@ -1160,30 +1222,30 @@
<frame x="0" y="27" width="3840" height="2133" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32969216" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.108072914" sideWeight="0.49725652" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.27606753" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.108072914" sideWeight="0.5027435" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" side_tool="true" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.108072914" sideWeight="0.4973404" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2532274" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.108072914" sideWeight="0.50265956" order="0" side_tool="true" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25" sideWeight="0.4974055" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.23237339" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.50259453" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.50259453" order="3" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39970207" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="3" side_tool="false" content_ui="combo" />
</layout>
</component>
<component name="Vcs.Log.UiProperties">
......@@ -1199,7 +1261,7 @@
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="4" />
<option name="time" value="5" />
</breakpoint-manager>
<watches-manager />
</component>
......@@ -1208,97 +1270,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/UpdateJob.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="11" column="20" selection-start-line="11" selection-start-column="20" selection-end-line="11" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/OrchestratorImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/Synchronization/SynchronizationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.07001522">
<caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/Synchronization.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.08751903">
<caret line="13" column="13" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/EnqueueJobs.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.08751903">
<caret line="12" column="55" selection-start-line="12" selection-start-column="36" selection-end-line="12" selection-end-column="55" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/Synchronization/EnqueueJobsTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.3850837">
<caret line="32" column="42" selection-start-line="32" selection-start-column="42" selection-end-line="32" selection-end-column="42" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/Synchronization/UpdateJobTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.19254185">
<caret line="21" column="55" selection-start-line="21" selection-start-column="50" selection-end-line="21" selection-end-column="55" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.08758568">
<caret line="5" column="26" selection-start-line="5" selection-start-column="26" selection-end-line="5" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/exception/InsufficientPermissionsException.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.070068546">
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/Body.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.08758568">
<caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="jar:///usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar!/java/lang/Error.class">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.23377639">
<caret line="20" column="0" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/Error.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.035034273">
<caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/PortalResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.070068546">
......@@ -1322,22 +1293,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-integrationtests/src/test/java/com/chaos/octopus/integrationtests/DistributeToWorkersTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.070068546">
<caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-integrationtests/src/test/java/com/chaos/octopus/integrationtests/EstablishConnectionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-1.0670221">
<caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-integrationtests/src/test/java/com/chaos/octopus/integrationtests/plugin/ChaosPluginTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.6656512">
......@@ -1417,14 +1372,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/AgentTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.34377176">
<caret line="102" column="20" selection-start-line="102" selection-start-column="20" selection-end-line="102" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/messageSpecification/ConnectSpecification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.2973384">
......@@ -1465,30 +1412,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/test/java/com/chaos/sdk/test/ChaosTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.81447643">
<caret line="89" column="35" selection-start-line="89" selection-start-column="35" selection-end-line="89" selection-end-column="35" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/OrchestratorImplTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.29093465">
<caret line="27" column="3" selection-start-line="27" selection-start-column="3" selection-end-line="27" selection-end-column="3" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.59803236">
<caret line="47" column="0" selection-start-line="47" selection-start-column="0" selection-end-line="47" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/OrchestratorProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.032326072">
......@@ -1539,36 +1462,69 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/OrchestratorImpl.java">
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/NetworkGateway.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.1398454">
<caret line="97" column="0" selection-start-line="97" selection-start-column="0" selection-end-line="97" selection-end-column="0" />
<state vertical-scroll-proportion="0.15952213">
<caret line="23" column="3" selection-start-line="23" selection-start-column="3" selection-end-line="23" selection-end-column="3" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/util/NetworkingUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.30709767">
<caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/message/AgentStateMessage.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.274276">
<caret line="16" column="18" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
<folding>
<element signature="e#5440#5441#0" expanded="true" />
<element signature="e#5462#5463#0" expanded="true" />
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/NetworkGateway.java">
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/ClusterState.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.2747716">
<caret line="17" column="26" selection-start-line="17" selection-start-column="26" selection-end-line="17" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/AgentProxyTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.4262078">
<caret line="28" column="43" selection-start-line="28" selection-start-column="43" selection-end-line="28" selection-end-column="43" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-integrationtests/src/test/java/com/chaos/octopus/integrationtests/EstablishConnectionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.15952213">
<caret line="23" column="3" selection-start-line="23" selection-start-column="3" selection-end-line="23" selection-end-column="3" />
<caret line="76" column="6" selection-start-line="76" selection-start-column="6" selection-end-line="76" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/util/NetworkingUtil.java">
<entry file="file://$PROJECT_DIR$/octopus-commons/src/test/java/com/chaos/sdk/test/ChaosTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.30709767">
<caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" />
<state vertical-scroll-proportion="0.07828455">
<caret line="16" column="28" selection-start-line="16" selection-start-column="28" selection-end-line="16" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/AgentProxy.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<state vertical-scroll-proportion="0.71817565">
<caret line="100" column="0" selection-start-line="100" selection-start-column="0" selection-end-line="100" selection-end-column="0" />
<folding>
<element signature="e#1321#1322#0" expanded="true" />
......@@ -1581,51 +1537,181 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/octopus/commons/core/message/AgentStateMessage.java">
<entry file="file://$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/PluginFactoryTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.274276">
<caret line="16" column="18" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
<state vertical-scroll-proportion="0.26616746">
<caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-commons/src/main/java/com/chaos/sdk/v6/dto/ClusterState.java">
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/Heartbeat.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.2747716">
<caret line="17" column="26" selection-start-line="17" selection-start-column="26" selection-end-line="17" selection-end-column="26" />
<folding />
<state vertical-scroll-proportion="0.0">
<caret line="27" column="5" selection-start-line="27" selection-start-column="5" selection-end-line="27" selection-end-column="5" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/synchronization/Heartbeat.java">
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/AgentAction.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="27" column="5" selection-start-line="27" selection-start-column="5" selection-end-line="27" selection-end-column="5" />
<state vertical-scroll-proportion="0.031313818">
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/Agent.java">
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/ListSupportedPluginsAction.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.7413914">
<caret line="118" column="51" selection-start-line="118" selection-start-column="51" selection-end-line="118" selection-end-column="51" />
<state vertical-scroll-proportion="0.172226">
<caret line="11" column="61" selection-start-line="11" selection-start-column="61" selection-end-line="11" selection-end-column="61" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskUpdatedListener.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.06088683">
<caret line="4" column="17" selection-start-line="4" selection-start-column="17" selection-end-line="4" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/AgentProxyTest.java">
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskCompleteListener.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.19395643">
<caret line="12" column="28" selection-start-line="12" selection-start-column="28" selection-end-line="12" selection-end-column="28" />
<state vertical-scroll-proportion="0.091330245">
<caret line="6" column="24" selection-start-line="6" selection-start-column="24" selection-end-line="6" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/plugin/ChaosPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.07610854">
<caret line="18" column="13" selection-start-line="18" selection-start-column="13" selection-end-line="18" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionSlot.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.56320316">
<caret line="45" column="40" selection-start-line="45" selection-start-column="40" selection-end-line="45" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/TaskStatusChangeListener.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.06088683">
<caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/PluginFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.06088683">
<caret line="4" column="30" selection-start-line="4" selection-start-column="30" selection-end-line="4" selection-end-column="30" />
<folding>
<element signature="e#486#487#0" expanded="true" />
<element signature="e#552#553#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/action/AgentStateActionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.43839347">
<caret line="52" column="0" selection-start-line="52" selection-start-column="0" selection-end-line="52" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/EnqueueTaskAction.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.29748127">
<caret line="19" column="17" selection-start-line="19" selection-start-column="17" selection-end-line="19" selection-end-column="17" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#488#489#0" expanded="true" />
<element signature="e#516#517#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/action/AgentStateAction.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.3287951">
<caret line="21" column="3" selection-start-line="21" selection-start-column="3" selection-end-line="21" selection-end-column="3" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#478#479#0" expanded="true" />
<element signature="e#528#529#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/ExecutionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="32" column="38" selection-start-line="32" selection-start-column="38" selection-end-line="32" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-integrationtests/src/test/java/com/chaos/octopus/integrationtests/DistributeToWorkersTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.39576438">
<caret line="34" column="55" selection-start-line="34" selection-start-column="55" selection-end-line="34" selection-end-column="55" />
<folding>
<element signature="e#1082#1242#0" expanded="true" />
<element signature="e#1241#1242#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/test/java/com/chaos/octopus/agent/unit/AgentTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.2131039">
<caret line="28" column="28" selection-start-line="28" selection-start-column="28" selection-end-line="28" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-agent/src/main/java/com/chaos/octopus/agent/Agent.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5146358">
<caret line="50" column="55" selection-start-line="50" selection-start-column="55" selection-end-line="50" selection-end-column="55" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/test/java/com/chaos/octopus/server/unit/OrchestratorImplTest.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.28182438">
<caret line="27" column="3" selection-start-line="27" selection-start-column="3" selection-end-line="27" selection-end-column="3" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/octopus-server/src/main/java/com/chaos/octopus/server/OrchestratorImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.8590878">
<caret line="135" column="5" selection-start-line="98" selection-start-column="8" selection-end-line="135" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
......@@ -4,34 +4,30 @@
*/
package com.chaos.octopus.agent;
import com.chaos.octopus.agent.action.AgentAction;
import com.chaos.octopus.agent.action.AgentStateAction;
import com.chaos.octopus.agent.action.EnqueueTaskAction;
import com.chaos.octopus.agent.action.ListSupportedPluginsAction;
import com.chaos.octopus.commons.core.*;
import com.chaos.octopus.commons.core.message.AgentStateMessage;
import com.chaos.octopus.commons.core.message.Message;
import com.chaos.octopus.commons.core.message.TaskMessage;
import com.chaos.octopus.commons.exception.DisconnectError;
import com.chaos.octopus.commons.util.Commands;
import com.chaos.octopus.commons.util.NetworkingUtil;
import com.chaos.octopus.commons.util.StreamUtilities;
import com.chaos.sdk.v6.dto.ClusterState;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
public class Agent implements Runnable, AutoCloseable, TaskUpdatedListener {
private AtomicInteger _currentQueueSize;
public class Agent implements Runnable, AutoCloseable, TaskStatusChangeListener {
private boolean _isRunning;
private Thread _thread;
private Map<String, PluginDefinition> _PluginDefinitions;
private ExecutionHandler _executionHandler;
private Orchestrator _orchestrator;
private ServerSocket _Server;
private Map<String, AgentAction> _agentActions = new HashMap<>();
private PluginFactory _pluginFactory;
public Agent(String orchestratorHostname, int orchestratorPort, int listenPort) {
this(new OrchestratorProxy(orchestratorHostname, orchestratorPort, listenPort), 4);
......@@ -43,12 +39,16 @@ public class Agent implements Runnable, AutoCloseable, TaskUpdatedListener {
public Agent(Orchestrator orchestrator, int parallelism) {
_orchestrator = orchestrator;
_currentQueueSize = new AtomicInteger(0);
_isRunning = false;
_thread = new Thread(this);
_thread.setName("Agent");
_PluginDefinitions = new HashMap<>();
_executionHandler = new ExecutionHandler(this, parallelism);
_pluginFactory = new PluginFactory();
_agentActions.put(Commands.LIST_SUPPORTED_PLUGINS, new ListSupportedPluginsAction(_pluginFactory, parallelism));
_agentActions.put(Commands.ENQUEUE_TASK, new EnqueueTaskAction(this));
_agentActions.put(Commands.AGENT_STATE, new AgentStateAction(_executionHandler));
}
public static Agent create(OctopusConfiguration config) {
......@@ -82,29 +82,7 @@ public class Agent implements Runnable, AutoCloseable, TaskUpdatedListener {
Message msg = StreamUtilities.ReadJson(message, Message.class);
OutputStream out = socket.getOutputStream();
switch (msg.getAction()) {
case Commands.LIST_SUPPORTED_PLUGINS:
AgentConfigurationMessage response = createAgentConfigurationMessage();
NetworkingUtil.send(response.toJson(), out);
break;
case Commands.ENQUEUE_TASK:
TaskMessage enqueueTask = StreamUtilities.ReadJson(message, TaskMessage.class);
enqueue(enqueueTask.getTask());
NetworkingUtil.send(Message.createWithAction("OK").toJson(), out);
break;
case Commands.AGENT_STATE:{
ClusterState.AgentState state = getState();
NetworkingUtil.send(new AgentStateMessage(state), out);
}
default:
break;
}
_agentActions.get(msg.getAction()).invoke(message, socket.getOutputStream());
}
} catch (Exception e) {
if (!_Server.isClosed()) e.printStackTrace();
......@@ -112,26 +90,6 @@ public class Agent implements Runnable, AutoCloseable, TaskUpdatedListener {
}
}
public ClusterState.AgentState getState(){
ClusterState.AgentState state = new ClusterState.AgentState();
state.runningSize = getQueueSize() > _executionHandler.getParallelism() ? _executionHandler.getParallelism() : getQueueSize();
state.queueSize = getQueueSize();
state.parallelism = _executionHandler.getParallelism();
return state;
}
private AgentConfigurationMessage createAgentConfigurationMessage() {
AgentConfigurationMessage message = new AgentConfigurationMessage();
message.setNumberOfSimulataniousTasks(_executionHandler.getParallelism());
for (PluginDefinition definition : get_SupportedPlugins())
message.getSupportedPlugins().add(definition.getId());
return message;
}
public void close() throws Exception {
_isRunning = false;
......@@ -139,49 +97,26 @@ public class Agent implements Runnable, AutoCloseable, TaskUpdatedListener {
if (_executionHandler != null) _executionHandler.close();
}
public byte[] serializeSupportedPlugins() {
StringBuilder sb = new StringBuilder();
for (PluginDefinition definition : get_SupportedPlugins())
sb.append(String.format("%s;", definition.getId()));
return sb.toString().getBytes();
}
public void addPlugin(PluginDefinition pluginFactory) {
_PluginDefinitions.put(pluginFactory.getId(), pluginFactory);
}
// TODO CAN BE REMOVED????
public List<PluginDefinition> get_SupportedPlugins() {
List<PluginDefinition> list = new ArrayList<>();
for (PluginDefinition definition : _PluginDefinitions.values())
list.add(definition);
return list;
_pluginFactory.addPlugin(pluginFactory);
}
public Plugin enqueue(Task task) {
Plugin plugin = _PluginDefinitions.get(task.pluginId).create(task);
Plugin plugin = _pluginFactory.create(task);
_executionHandler.enqueue(plugin);
_currentQueueSize.incrementAndGet();
return plugin;
}
public void onTaskComplete(Task task) {
_currentQueueSize.decrementAndGet();
_orchestrator.taskCompleted(task);
}
@Override
public void onTaskUpdate(Task task) {
_orchestrator.taskUpdate(task);
}
public int getQueueSize() {
return _currentQueueSize.get();
return _executionHandler.getQueueSize();
}
}
......@@ -5,6 +5,7 @@
package com.chaos.octopus.agent;
import com.chaos.octopus.commons.core.Plugin;
import com.chaos.octopus.commons.core.Task;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
......@@ -12,26 +13,28 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
public class ExecutionHandler implements AutoCloseable, TaskCompleteListener {
private Agent _agent;
private TaskStatusChangeListener _taskStatusChangedListener;
private ExecutorService _pool;
private int parallelism;
private AtomicInteger _currentQueueSize = new AtomicInteger(0);
public ExecutionHandler(Agent agent, int parallelism) {
public ExecutionHandler(TaskStatusChangeListener agent, int parallelism) {
this.parallelism = parallelism;
_pool = Executors.newFixedThreadPool(parallelism);
_agent = agent;
_taskStatusChangedListener = agent;
}
@Override
public void onTaskComplete(ExecutionSlot completedTask) {
_agent.onTaskComplete(completedTask.getPlugin().getTask());
public void onTaskComplete(Task task) {
_currentQueueSize.decrementAndGet();
_taskStatusChangedListener.onTaskComplete(task);
}
public void enqueue(Plugin plugin) {
_currentQueueSize.incrementAndGet();
ExecutionSlot slot = new ExecutionSlot(plugin);
slot.addTaskCompleteListener(this);
slot.addTaskUpdateListener(_agent);
slot.addTaskUpdateListener(_taskStatusChangedListener);
_pool.execute(slot);
}
......@@ -45,4 +48,7 @@ public class ExecutionHandler implements AutoCloseable, TaskCompleteListener {
public int getParallelism() {
return parallelism;
}
public int getQueueSize() {
return _currentQueueSize.get();
}
}
......@@ -43,7 +43,7 @@ public class ExecutionSlot implements Runnable {
_plugin.getTask().set_State(TaskState.Rolledback);
onTaskUpdated(_plugin.getTask());
} finally {
onTaskComplete();
onTaskComplete(_plugin.getTask());
}
}
......@@ -59,9 +59,9 @@ public class ExecutionSlot implements Runnable {
return _plugin;
}
private void onTaskComplete() {
private void onTaskComplete(Task task) {
for (TaskCompleteListener callback : _taskCompleteListeners)
callback.onTaskComplete(this);
callback.onTaskComplete(task);
}
private void onTaskUpdated(Task task) {
......
package com.chaos.octopus.agent;
import com.chaos.octopus.commons.core.Plugin;
import com.chaos.octopus.commons.core.PluginDefinition;
import com.chaos.octopus.commons.core.Task;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PluginFactory {
private final Map<String, PluginDefinition> pluginDefinitions;
public PluginFactory(){
this.pluginDefinitions = new HashMap<>();
}
public Plugin create(Task task){
return pluginDefinitions.get(task.pluginId).create(task);
}
public void addPlugin(PluginDefinition definition) {
pluginDefinitions.put(definition.getId(), definition);
}
public List<PluginDefinition> get_SupportedPlugins() {
List<PluginDefinition> list = new ArrayList<>();
for (PluginDefinition definition : pluginDefinitions.values())
list.add(definition);
return list;
}
}
package com.chaos.octopus.agent;
import com.chaos.octopus.commons.core.Task;
public interface TaskCompleteListener
{
void onTaskComplete(ExecutionSlot completedTask);
void onTaskComplete(Task task);
}
package com.chaos.octopus.agent;
public interface TaskStatusChangeListener extends TaskUpdatedListener, TaskCompleteListener {
}
package com.chaos.octopus.agent.action;
import java.io.IOException;
import java.io.OutputStream;
public interface AgentAction {
void invoke(String message, OutputStream out) throws IOException;
}
package com.chaos.octopus.agent.action;
import com.chaos.octopus.agent.ExecutionHandler;
import com.chaos.octopus.commons.core.message.AgentStateMessage;
import com.chaos.octopus.commons.util.NetworkingUtil;
import com.chaos.sdk.v6.dto.ClusterState;
import java.io.IOException;
import java.io.OutputStream;
public class AgentStateAction implements AgentAction {
private final ExecutionHandler executionHandler;
public AgentStateAction(ExecutionHandler executionHandler) {
this.executionHandler = executionHandler;
}
public void invoke(String message, OutputStream out) throws IOException {
ClusterState.AgentState state = getState();
NetworkingUtil.send(new AgentStateMessage(state), out);
}
public ClusterState.AgentState getState(){
ClusterState.AgentState state = new ClusterState.AgentState();
state.runningSize = executionHandler.getQueueSize() > executionHandler.getParallelism()
? executionHandler.getParallelism()
: executionHandler.getQueueSize();
state.queueSize = executionHandler.getQueueSize();
state.parallelism = executionHandler.getParallelism();
return state;
}
}
package com.chaos.octopus.agent.action;
import com.chaos.octopus.agent.Agent;
import com.chaos.octopus.commons.core.message.Message;
import com.chaos.octopus.commons.core.message.TaskMessage;
import com.chaos.octopus.commons.util.NetworkingUtil;
import com.chaos.octopus.commons.util.StreamUtilities;
import java.io.IOException;
import java.io.OutputStream;
public class EnqueueTaskAction implements AgentAction {
private final Agent agent;
public EnqueueTaskAction(Agent agent) {
this.agent = agent;
}
public void invoke(String message, OutputStream out) throws IOException {
TaskMessage enqueueTask = StreamUtilities.ReadJson(message, TaskMessage.class);
agent.enqueue(enqueueTask.getTask());
NetworkingUtil.send(Message.createWithAction("OK").toJson(), out);
}
}
package com.chaos.octopus.agent.action;
import com.chaos.octopus.agent.PluginFactory;
import com.chaos.octopus.commons.core.AgentConfigurationMessage;
import com.chaos.octopus.commons.core.PluginDefinition;
import com.chaos.octopus.commons.util.NetworkingUtil;
import java.io.IOException;
import java.io.OutputStream;
import java.util.*;
public class ListSupportedPluginsAction implements AgentAction {
private final PluginFactory pluginFactory;
private final int parallelism;
public ListSupportedPluginsAction(PluginFactory pluginFactory, int parallelism){
this.pluginFactory = pluginFactory;
this.parallelism = parallelism;
}
public void invoke(String message, OutputStream out) throws IOException {
AgentConfigurationMessage response = createAgentConfigurationMessage();
NetworkingUtil.send(response.toJson(), out);
}
private AgentConfigurationMessage createAgentConfigurationMessage() {
AgentConfigurationMessage message = new AgentConfigurationMessage();
message.setNumberOfSimulataniousTasks(parallelism);
for (PluginDefinition definition : get_SupportedPlugins())
message.getSupportedPlugins().add(definition.getId());
return message;
}
public List<PluginDefinition> get_SupportedPlugins() {
List<PluginDefinition> list = new ArrayList<>();
for (PluginDefinition definition : pluginFactory.get_SupportedPlugins())
list.add(definition);
return list;
}
}
......@@ -4,40 +4,19 @@ import static org.junit.Assert.*;
import java.util.List;
import com.chaos.octopus.agent.ExecutionHandler;
import com.chaos.octopus.agent.PluginFactory;
import com.chaos.octopus.agent.TaskStatusChangeListener;
import com.chaos.octopus.agent.action.AgentStateAction;
import com.chaos.octopus.agent.action.EnqueueTaskAction;
import com.chaos.octopus.agent.action.ListSupportedPluginsAction;
import com.chaos.octopus.commons.core.*;
import com.chaos.sdk.v6.dto.ClusterState;
import org.junit.Test;
import com.chaos.octopus.agent.Agent;
public class AgentTest {
@Test
public void addPlugin_Default_PluginIsAddedToSupporedPlugins() throws Exception {
PluginDefinition plugin = new TestPlugin();
ServerMock mock = new ServerMock();
try (Agent agent = new Agent(mock, 1)) {
agent.addPlugin(plugin);
List<PluginDefinition> plugins = agent.get_SupportedPlugins();
assertEquals(1, plugins.size());
assertEquals(plugin, plugins.get(0));
}
}
@Test
public void serializeSupportedPlugins_AgentSupportASinglePlugin_ReturnByteArray() throws Exception {
PluginDefinition plugin = new TestPlugin();
ServerMock mock = new ServerMock();
try (Agent agent = new Agent(mock, 1)) {
agent.addPlugin(plugin);
byte[] result = agent.serializeSupportedPlugins();
assertEquals("com.chaos.octopus.agent.unit.TestPlugin, 1.0.0;", new String(result));
}
}
@Test
public void enqueueTask_GivenATask_ShouldBeAddedToTheQueue() throws Exception {
ServerMock mock = new ServerMock();
......@@ -90,45 +69,6 @@ public class AgentTest {
}
}
@Test
public void getState_NoTasksQueued_ReturnEmptyState() throws Exception {
ServerMock mock = new ServerMock();
try(Agent a = new Agent(mock, 1)){
assertEquals(0, a.getState().runningSize);
}
}
@Test
public void getState_OneTask_ReturnOneExecutingTask() throws Exception {
ServerMock mock = new ServerMock();
try(Agent a = new Agent(mock, 1)){
a.addPlugin(new TestPlugin());
Plugin p = a.enqueue(Make_TestTaskThatTake10msToExecute());
for (int i = 1000; i > 0 && p.getTask().get_State() != TaskState.Executing; i--)
Thread.sleep(1);
assertEquals(1, a.getState().runningSize);
assertEquals(1, a.getState().queueSize);
}
}
@Test
public void getState_OneExecutingAndOneQueuedTask_ReturnOneExecutingTask() throws Exception {
ServerMock mock = new ServerMock();
try(Agent a = new Agent(mock, 1)){
a.addPlugin(new TestPlugin());
Plugin p = a.enqueue(Make_TestTaskThatTake10msToExecute());
a.enqueue(Make_TestTaskThatTake10msToExecute());
for (int i = 1000; i > 0 && p.getTask().get_State() != TaskState.Executing; i--)
Thread.sleep(1);
assertEquals(1, a.getState().runningSize);
assertEquals(2, a.getState().queueSize);
}
}
protected Task Make_TestTaskThatTake10msToExecute() {
Task task = new Task();
task.pluginId = "com.chaos.octopus.agent.unit.TestPlugin, 1.0.0";
......
package com.chaos.octopus.agent.unit;
import com.chaos.octopus.agent.PluginFactory;
import com.chaos.octopus.commons.core.PluginDefinition;
import com.chaos.octopus.commons.core.TestPlugin;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class PluginFactoryTest {
@Test
public void addPlugin_Default_PluginIsAddedToSupporedPlugins() throws Exception {
PluginFactory pf = new PluginFactory();
pf.addPlugin(new TestPlugin());
List<PluginDefinition> plugins = pf.get_SupportedPlugins();
assertEquals(1, plugins.size());
}
}
package com.chaos.octopus.agent.unit.action;
import com.chaos.octopus.agent.ExecutionHandler;
import com.chaos.octopus.agent.TaskStatusChangeListener;
import com.chaos.octopus.agent.action.AgentStateAction;
import com.chaos.octopus.commons.core.Plugin;
import com.chaos.octopus.commons.core.Task;
import com.chaos.octopus.commons.core.TaskState;
import com.chaos.octopus.commons.core.TestPlugin;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class AgentStateActionTest{
@Test
public void getState_NoTasksQueued_ReturnEmptyState() throws Exception {
ExecutionHandler eh = new ExecutionHandler(new TaskStatusChangeListener() {
public void onTaskComplete(Task task) {
}
public void onTaskUpdate(Task task) {
}
}, 1);
AgentStateAction esa = new AgentStateAction(eh);
assertEquals(0, esa.getState().runningSize);
assertEquals(0, esa.getState().queueSize);
}
@Test
public void getState_OneTask_ReturnOneExecutingTask() throws Exception {
ExecutionHandler eh = new ExecutionHandler(new TaskStatusChangeListener() {
public void onTaskComplete(Task task) {
}
public void onTaskUpdate(Task task) {
}
}, 1);
AgentStateAction esa = new AgentStateAction(eh);
Plugin p = new TestPlugin().create(Make_TestTaskThatTake10msToExecute());
eh.enqueue(p);
for (int i = 1000; i > 0 && p.getTask().get_State() != TaskState.Executing; i--)
Thread.sleep(1);
assertEquals(1, esa.getState().runningSize);
assertEquals(1, esa.getState().queueSize);
}
@Test
public void getState_OneExecutingAndOneQueuedTask_ReturnOneExecutingTask() throws Exception {
ExecutionHandler eh = new ExecutionHandler(new TaskStatusChangeListener() {
public void onTaskComplete(Task task) {
}
public void onTaskUpdate(Task task) {
}
}, 1);
AgentStateAction esa = new AgentStateAction(eh);
Plugin p = new TestPlugin().create(Make_TestTaskThatTake10msToExecute());
eh.enqueue(p);
eh.enqueue(new TestPlugin().create(Make_TestTaskThatTake10msToExecute()));
for (int i = 1000; i > 0 && p.getTask().get_State() != TaskState.Executing; i--)
Thread.sleep(1);
assertEquals(1, esa.getState().runningSize);
assertEquals(2, esa.getState().queueSize);
}
protected Task Make_TestTaskThatTake10msToExecute() {
Task task = new Task();
task.pluginId = "com.chaos.octopus.agent.unit.TestPlugin, 1.0.0";
task.properties.put("sleep", "10");
return task;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment