コード例 #1
0
        public void TestSimpleRoutingConnectionFactory()
        {
            var connectionFactory1 = new Mock <IConnectionFactory>();
            var connectionFactory2 = new Mock <IConnectionFactory>();
            var factories          = new Dictionary <object, IConnectionFactory>
            {
                { "foo", connectionFactory1.Object },
                { "bar", connectionFactory2.Object }
            };

            var connectionFactory = new SimpleRoutingConnectionFactory();

            connectionFactory.SetTargetConnectionFactories(factories);
            var tasks = new List <Task>();

            for (var i = 0; i < 3; i++)
            {
                var count = i;
                var task  = Task.Run(() =>
                {
                    SimpleResourceHolder.Bind(connectionFactory, count % 2 == 0 ? "foo" : "bar");
                    connectionFactory.CreateConnection();
                    SimpleResourceHolder.Unbind(connectionFactory);
                });
                tasks.Add(task);
            }

            Assert.True(Task.WaitAll(tasks.ToArray(), 10000));
            connectionFactory1.Verify((f) => f.CreateConnection(), Times.Exactly(2));
            connectionFactory2.Verify((f) => f.CreateConnection());
        }