示例#1
0
        public void TestConsumerStateChangeNotification()
        {
            // Consumer JobStateChange
            var env = new RPCEnvelope();
            var con = new JobStateChange();

            env.Message   = con;
            env.Operation = con.GetType().Name;
            con.Id        = Guid.NewGuid();
            con.Timestamp = DateTime.UtcNow;
            con.State     = "Setup";

            var iso = new Newtonsoft.Json.Converters.IsoDateTimeConverter();

            iso.DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK";

            string json = Newtonsoft.Json.JsonConvert
                          .SerializeObject(env, iso);

            // Orchestrator JobStateChange
            JToken token = JObject.Parse(json);
            String op    = (string)token.SelectToken("Operation");
            JToken msg   = token.SelectToken("Mesage");

            Assert.IsTrue(op == "JobStateChange");

            var serializer = new Newtonsoft.Json.JsonSerializer();

            Newtonsoft.Json.JsonReader reader = token["Message"].CreateReader();

            var job = serializer.Deserialize <JobStateChange>(reader);

            Assert.AreEqual(((JobStateChange)env.Message).State, job.State);
        }
        internal static void Send(JobStateChange msg)
        {
            var env = new RPCEnvelope();

            env.Message          = msg;
            env.Operation        = "JobStateChange";
            env.ResponseQueueUrl = null;
            Send(msg.GetType().Name, JsonConvert.SerializeObject(env));
        }