public void Should_Create_Slot() { IDictionary<string, Assembly> assemblies = new Dictionary<string, Assembly>(); IAllocationDefinition definition = new AllocationDefinition( 2 ); Assert.AreEqual( 2, definition.MaxSlots ); }
public void Should_Execute_IPlugin() { IExecutionManager manager = new ExecutionManager( new PluginManager() ); IAllocationDefinition definition = new AllocationDefinition( 2 ); IExecutionSlot slot = new ExecutionSlot(definition); definition.Add( DTO.NewPluginInfoTestPlugin ); manager.PluginManager.Install( definition ); manager.Add( slot ); IPlugin completedPlugin = null; TestPlugin testPlugin = new TestPlugin(100); manager.ExecuteCompleted += delegate(object sender, ObjectEventArgs<IPlugin> eventArgs) { completedPlugin = eventArgs.EventObject; }; manager.Execute( testPlugin ); Assert.AreEqual( slot, manager[ definition ] ); Assert.AreEqual( 1, manager[ definition ].UsedSlots ); Timing.WaitWhile(() => completedPlugin == null, 1000); Assert.AreEqual( testPlugin, completedPlugin ); Assert.AreEqual( 0, manager[ definition ].UsedSlots ); Assert.AreEqual( PluginStatus.Executed, testPlugin.Status ); }
public void Should_Add_IPlugin() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add( DTO.NewPluginInfoTestPlugin ); IExecutionSlot slot = new ExecutionSlot( definition ); slot.Execute( new TestPlugin( 50 ) ); Assert.AreEqual(1, slot.UsedSlots); }
public void Should_Add_ExecutionSlot() { IExecutionManager manager = new ExecutionManager( new PluginManager() ); IAllocationDefinition definition = new AllocationDefinition( 2 ); definition.Add( DTO.NewPluginInfoTestPlugin ); manager.PluginManager.Install( definition ); manager.Add( new ExecutionSlot( definition ) ); Assert.AreEqual( 1, manager.Count ); }
public void Should_Be_Able_To_Iterate_Through_Added_Plugins() { IAllocationDefinition definition = new AllocationDefinition(6); definition.Add(DTO.NewPluginInfoTestPlugin); IExecutionSlot slot = new ExecutionSlot(definition); slot.Execute(new TestPlugin(600)); slot.Execute(new TestPlugin(600)); slot.Execute(new TestPlugin(600)); slot.Execute(new TestPlugin(600)); Assert.AreEqual( 4, slot.ToList().Count ); }
public void Should_Commit_Plugin() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add(DTO.NewPluginInfoTestPlugin); TestPlugin plugin = new TestPlugin(50); IExecutionSlot slot = new ExecutionSlot(definition); slot.Commit( plugin ); Timing.WaitUntil(() => plugin.Status == PluginStatus.Committed, 1000); Assert.AreEqual( PluginStatus.Committed, plugin.Status ); }
public void Should_Add_IPluginInfo_To_Definition() { IAllocationDefinition definition = new AllocationDefinition( 2 ); IPluginInfo pluginInfo = DTO.NewPluginInfoTestPlugin; definition.Add( pluginInfo ); Assert.AreEqual( pluginInfo.Assembly, definition[ pluginInfo.PluginIdentifier ].Assembly ); Assert.AreEqual( pluginInfo.AssemblyIdentifier, definition[ pluginInfo.PluginIdentifier ].AssemblyIdentifier ); Assert.AreEqual( pluginInfo.Classname, definition[ pluginInfo.PluginIdentifier ].Classname ); Assert.AreEqual( pluginInfo.CreatedDate.ToShortDateString(), definition[ pluginInfo.PluginIdentifier ].CreatedDate.ToShortDateString() ); Assert.AreEqual( pluginInfo.Description, definition[ pluginInfo.PluginIdentifier ].Description ); Assert.AreEqual( pluginInfo.Filename, definition[ pluginInfo.PluginIdentifier ].Filename ); Assert.AreEqual( pluginInfo.ID, definition[ pluginInfo.PluginIdentifier ].ID ); Assert.AreEqual( pluginInfo.Name, definition[ pluginInfo.PluginIdentifier ].Name ); }
public void Should_Execute_Plugin() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add(DTO.NewPluginInfoTestPlugin); TestPlugin plugin = new TestPlugin(100); IExecutionSlot slot = new ExecutionSlot(definition); slot.Execute( plugin ); Assert.AreEqual( 1, slot.UsedSlots ); plugin.EndCurrentOperation(); Timing.WaitUntil(() => plugin.Status == PluginStatus.Executed, 1000); Assert.AreEqual( 1.0, plugin.OperationProgress ); Assert.AreEqual( 0, slot.UsedSlots ); Assert.AreEqual( PluginStatus.Executed, plugin.Status ); }
public void Should_Be_Able_To_Iterate_Through_Installed_IPluginsInfos() { IAllocationDefinition definition = new AllocationDefinition(2); IPluginInfo pluginInfo1 = DTO.NewPluginInfoTestPlugin; IPluginInfo pluginInfo2 = DTO.NewPluginInfoTestPlugin; pluginInfo2.Version = "2.0.0.0"; definition.Add(pluginInfo1); definition.Add(pluginInfo2); int count = 0; foreach( IPluginInfo info in definition ) { Assert.IsNotNull( info ); count++; } Assert.AreEqual( 2, count ); }
public void Should_Commit_Plugin() { IAgentEngine engine = new AgentEngine(); IPlugin plugin = new TestPlugin(); IAllocationDefinition definition = new AllocationDefinition(2); definition.Add(DTO.NewPluginInfoTestPlugin); engine.AddDefinition(definition); IPlugin outPlugin = null; engine.ExecutionManager.CommitCompleted += delegate(object sender, ObjectEventArgs<IPlugin> eventArgs) { outPlugin = eventArgs.EventObject; }; engine.Commit(plugin); Timing.WaitWhile(() => outPlugin == null, 1000); Assert.AreEqual(plugin, outPlugin); Assert.AreEqual(PluginStatus.Committed, outPlugin.Status); }
public void Should_Initialize_With_IAllocationDefinition() { IAllocationDefinition definition = new AllocationDefinition(1); IExecutionSlot slot = new ExecutionSlot( definition ); Assert.AreEqual( definition, slot.Definition ); }
private IAllocationDefinition ConvertToDefinition( IEnumerable<PluginInfo> plugins, uint maxSlots ) { IAllocationDefinition definition = new AllocationDefinition( maxSlots ); foreach( IPluginInfo info in plugins ) { definition.Add( info ); } return definition; }
public void Should_Return_True_If_Plugin_Is_Installed() { IAgentEngine engine = new AgentEngine(); IAllocationDefinition definition = new AllocationDefinition(2); definition.Add( DTO.NewPluginInfoTestPlugin ); engine.AddDefinition( definition ); Assert.IsTrue( engine.IsPluginInstalled( DTO.NewPluginInfoTestPlugin.PluginIdentifier ) ); }
public void Should_Not_Be_Able_To_Create_With_Zero_MaxSlots() { AllocationDefinition definition = new AllocationDefinition( 0 ); }
public void Should_Throw_FileNotFoundException_If_Assembly_Isnt_Found_When_Insall_Definition() { IPluginManager pluginManager = new PluginManager(); IAllocationDefinition definition = new AllocationDefinition( 2 ); definition.Add( new PluginInfo() ); pluginManager.Install( definition ); }
public void Should_Rollback_Plugin() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add(DTO.NewPluginInfoTestPlugin2); TestPlugin2 plugin = new TestPlugin2(50); IExecutionSlot slot = new ExecutionSlot(definition); slot.Rollback( plugin ); Timing.WaitUntil(() => plugin.Status == PluginStatus.Rolledback, 1000); Assert.AreEqual(PluginStatus.Rolledback, plugin.Status); }
public void Should_Throw_Exception_If_All_Slots_Are_Used() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add(DTO.NewPluginInfoTestPlugin); IExecutionSlot slot = new ExecutionSlot(definition); slot.Execute(new TestPlugin(600)); slot.Execute(new TestPlugin(600)); }
public void Should_Throw_NullReference_If_Adding_A_Null_Plugin() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add( DTO.NewPluginInfoTestPlugin ); IExecutionSlot slot = new ExecutionSlot( definition ); slot.Execute( null ); }
public void Should_Fail_Commit_Plugin() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add(DTO.NewPluginInfoTestPlugin); TestPlugin plugin = new TestPlugin(50, true); IPlugin failedPlugin = null; Exception pluginException = null; IExecutionSlot slot = new ExecutionSlot(definition); slot.CommitFailed += delegate(object sender, ObjectErrorEventArgs<IPlugin> eventArgs) { failedPlugin = eventArgs.EventObject; pluginException = eventArgs.Exception; }; slot.Commit(plugin); Timing.WaitWhile(() => failedPlugin == null, 3000); Assert.AreEqual( plugin, failedPlugin ); Assert.IsNotNull( pluginException ); Assert.AreEqual( PluginStatus.CommitFailed, plugin.Status ); }
public void Should_Not_Add_IPlugin_If_It_Violates_Definition() { IAllocationDefinition definition = new AllocationDefinition(1); definition.Add( DTO.NewPluginInfoTestPlugin ); IExecutionSlot slot = new ExecutionSlot( definition ); slot.Execute( new TestPlugin2() ); }