Skip to content

Commit

Permalink
first green test
Browse files Browse the repository at this point in the history
  • Loading branch information
hjalet committed May 14, 2011
1 parent db1bcf8 commit 270f285
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 6 deletions.
79 changes: 79 additions & 0 deletions Rhino.ServiceBus.Tests/Containers/Unity/ContainerTests.cs
Expand Up @@ -28,5 +28,84 @@ public void Consumer_must_be_transient()
Assert.True(null != ex.InnerException as InvalidUsageException);
}
}

[Fact]
public void Bus_instance_is_singleton()
{
var container = new UnityContainer();
new RhinoServiceBusConfiguration()
.UseUnity(container)
.Configure();

var startable = container.Resolve<IStartableServiceBus>();
var bus = container.Resolve<IServiceBus>();
Assert.Same(startable, bus);
}

//[Fact]
//public void Oneway_bus_is_singleton()
//{
// var container = ObjectFactory.Container;
// new OnewayRhinoServiceBusConfiguration()
// .UseStructureMap(container)
// .Configure();

// var oneWayBus = container.GetInstance<IOnewayBus>();
// var second = container.GetInstance<IOnewayBus>();
// Assert.Same(oneWayBus, second);
//}

//[Fact]
//public void RhinoQueues_bus_is_registered()
//{
// var container = new Container();
// new RhinoServiceBusConfiguration()
// .UseStructureMap(container)
// .UseStandaloneConfigurationFile("RhinoQueues/RhinoQueues.config")
// .Configure();

// var bus = container.GetInstance<IServiceBus>();
// Assert.NotNull(bus);
//}

//[Fact]
//public void LoadBalancer_is_singleton()
//{
// var container = new Container();
// new LoadBalancerConfiguration()
// .UseStructureMap(container)
// .UseStandaloneConfigurationFile("LoadBalancer.config")
// .Configure();

// var startable = container.GetInstance<IStartable>();
// var loadBalancer = container.GetInstance<MsmqLoadBalancer>();
// Assert.Same(startable, loadBalancer);
//}

//[Fact]
//public void Registers_logging_module()
//{
// var container = new Container();
// new RhinoServiceBusConfiguration()
// .UseStructureMap(container)
// .UseStandaloneConfigurationFile("BusWithLogging.config")
// .Configure();

// var loggingModule = container.GetInstance<MessageLoggingModule>();
// Assert.NotNull(loggingModule);
//}

//[Fact]
//public void Registers_load_balancer_module()
//{
// var container = new Container();
// new RhinoServiceBusConfiguration()
// .UseStructureMap(container)
// .UseStandaloneConfigurationFile("LoadBalancer/BusWithLoadBalancer.config")
// .Configure();

// var loadBalancerMessageModule = container.GetInstance<LoadBalancerMessageModule>();
// Assert.NotNull(loadBalancerMessageModule);
//}
}
}
31 changes: 25 additions & 6 deletions Rhino.ServiceBus.Unity/UnityBuilder.cs
@@ -1,9 +1,11 @@
using System;
using System.Linq;
using Microsoft.Practices.Unity;
using Rhino.ServiceBus.Actions;
using Rhino.ServiceBus.Config;
using Rhino.ServiceBus.Impl;
using Rhino.ServiceBus.Internal;
using Rhino.ServiceBus.MessageModules;

namespace Rhino.ServiceBus.Unity
{
Expand Down Expand Up @@ -31,8 +33,9 @@ public void RegisterDefaultServices()

container.RegisterType<IServiceLocator, UnityServiceLocator>();

var types = typeof (IServiceBus).Assembly.GetTypes().Where(t => typeof (IBusConfigurationAware).IsAssignableFrom(t)).ToList();
types.ForEach(t => container.RegisterType(typeof (IBusConfigurationAware), t, new ContainerControlledLifetimeManager()));
typeof(IServiceBus).Assembly.GetTypes()
.Where(t => typeof (IBusConfigurationAware).IsAssignableFrom(t)).ToList()
.ForEach(type => container.RegisterType(typeof (IBusConfigurationAware), type, new ContainerControlledLifetimeManager()));

foreach (var configurationAware in container.ResolveAll<IBusConfigurationAware>())
{
Expand All @@ -45,14 +48,30 @@ public void RegisterDefaultServices()
container.RegisterType(type, type.FullName);
}

container.RegisterType<IReflection, DefaultReflection>(new ContainerControlledLifetimeManager());
container.RegisterType(typeof(IMessageSerializer), configuration.SerializerType, new ContainerControlledLifetimeManager());
container.RegisterType<IEndpointRouter, EndpointRouter>(new ContainerControlledLifetimeManager());
container.RegisterType<IReflection, DefaultReflection>(new ContainerControlledLifetimeManager())
.RegisterType(typeof(IMessageSerializer), configuration.SerializerType, new ContainerControlledLifetimeManager())
.RegisterType<IEndpointRouter, EndpointRouter>(new ContainerControlledLifetimeManager());
}

public void RegisterBus()
{
throw new NotImplementedException();
var busConfig = (RhinoServiceBusConfiguration) configuration;

container.RegisterType<IDeploymentAction, CreateLogQueueAction>()
.RegisterType<IDeploymentAction, CreateQueuesAction>();

container.RegisterType<DefaultServiceBus>(new ContainerControlledLifetimeManager())
.RegisterType<IStartableServiceBus, DefaultServiceBus>(
new InjectionConstructor(
new ResolvedParameter<IServiceLocator>(),
new ResolvedParameter<ITransport>(),
new ResolvedParameter<ISubscriptionStorage>(),
new ResolvedParameter<IReflection>(),
new ResolvedArrayParameter<IMessageModule>(),
new InjectionParameter<MessageOwner[]>(busConfig.MessageOwners.ToArray()),
new ResolvedParameter<IEndpointRouter>()))
.RegisterType<IServiceBus, DefaultServiceBus>()
.RegisterType<IStartable, DefaultServiceBus>();
}

public void RegisterPrimaryLoadBalancer()
Expand Down

0 comments on commit 270f285

Please sign in to comment.