public void BasicTest()
        {
            string goodInstance = "goodInstance";
            var statePersister = new Mock<IStatePersister>();
            // Creating fake data for the statePersister...
            var configurationsPersisted = new List<Configuration>()
            {
                GetConfig(1),
                GetConfig(2),
                GetConfig(3)
            };
            Configuration firstGoodConfiguration = GetConfig(1);
            Configuration secondGoodConfiguration = GetConfig(6);
            firstGoodConfiguration.Instance = goodInstance;
            secondGoodConfiguration.Instance = goodInstance;
            configurationsPersisted.Add(firstGoodConfiguration);
            configurationsPersisted.Add(secondGoodConfiguration);

            statePersister.Setup(o => o.Read()).Returns(configurationsPersisted);

            //Creating a fake requestmanager.
            var subscriptionsRequest = new Mock<IRequestManager<ConfigurationSubscription, ConfigurationSubscriptionAnswer>>();
            var updateRequest = new Mock<IRequestManager<ConfigurationUpdate, ConfigurationUpdateAnswer>>();
            var allAnswerSent = new List<AnwserMessage<ConfigurationSubscriptionAnswer>>();
            subscriptionsRequest.Setup(o => o.Send(It.IsAny<AnwserMessage<ConfigurationSubscriptionAnswer>>())).
                Callback<AnwserMessage<ConfigurationSubscriptionAnswer>>(allAnswerSent.Add);

            var toTest = new ConfigurationRequestHandler(subscriptionsRequest.Object, updateRequest.Object, statePersister.Object);

            //Sending a request to the manager
            var requestId = 1021;
            var request = GetRequestMessage(requestId, goodInstance);
            subscriptionsRequest.Raise(mock => mock.OnRequest += null, null, request);

            //We check that we received what we should, one message with two elements
            Assert.AreEqual(1, allAnswerSent.Count);
            Assert.AreEqual(requestId, allAnswerSent.First().id);
            var sentConfigurations = allAnswerSent.First().answer.result;
            Assert.AreEqual(2, sentConfigurations.Count);
            Assert.AreEqual(firstGoodConfiguration, sentConfigurations.First());
            Assert.AreEqual(secondGoodConfiguration, sentConfigurations.Last());

            //test wildcard :
            var requestAll = GetRequestMessage(requestId+1, ConfigurationRequestHandler.ConfigurationInstanceWildcard);
            subscriptionsRequest.Raise(mock => mock.OnRequest += null, null, requestAll);
            Assert.AreEqual(configurationsPersisted.Count, allAnswerSent.Last().answer.result.Count);
        }
        static void Main(string[] args)
        {
            logger.Info("Starting application");
            IWebsocket connection = new RequestFlickerService("ConfigurationService");
            //Expected input :
            //{"service":"ConfigurationService","request":{"type":"ConfigurationSubscription", "instance":"*"}}
            var subscriptionsRequestManager = new JsonRequestManager<ConfigurationSubscription, ConfigurationSubscriptionAnswer>(connection);
            //{"service":"ConfigurationService","request":{"type":"ConfigurationUpdate", "update":{"Instance": "inst9", "Value": "value9", "Key": "key9"}}}
            var updateRequestManager = new JsonRequestManager<ConfigurationUpdate, ConfigurationUpdateAnswer>(connection);

            var requestHandler = new ConfigurationRequestHandler(subscriptionsRequestManager,updateRequestManager, new StatePersister());

            while (true)
            {
                Thread.Sleep(300000);
                NLog.LogManager.GetCurrentClassLogger().Info("I am still alive!(Providing some infos here...)");
            }
        }