Exemplo n.º 1
0
        internal void OnOrderCall(Order order)
        {
            OnOrder?.Invoke(order);
            // invoke event specific for the transaction
            string correlationId = order.TransID.ToString();

            #region Totally untested code or handling manual transactions

            if (!QuikService.Storage.Contains(correlationId))
            {
                correlationId = "manual:" + order.OrderNum + ":" + correlationId;
                var fakeTrans = new Transaction()
                {
                    Comment  = correlationId,
                    IsManual = true
                               // TODO map order properties back to transaction
                               // ideally, make C# property names consistent (Lua names are set as JSON.NET properties via an attribute)
                };
                QuikService.Storage.Set <Transaction>(correlationId, fakeTrans);
            }

            #endregion Totally untested code or handling manual transactions

            var tr = QuikService.Storage.Get <Transaction>(correlationId);
            if (tr != null)
            {
                lock (tr)
                {
                    tr.OnOrderCall(order);
                }
            }
            Trace.Assert(tr != null, "Transaction must exist in persistent storage until it is completed and all order messages are recieved");
        }
Exemplo n.º 2
0
        ///<summary>
        ///  Returns a Typed OnOrder Entity with mock values.
        ///</summary>
        static public OnOrder CreateMockInstance_Generated(TransactionManager tm)
        {
            OnOrder mock = new OnOrder();

            mock.TranDate  = TestUtility.Instance.RandomDateTime();
            mock.TranTime  = TestUtility.Instance.RandomString(5, false);;
            mock.DeliverDt = TestUtility.Instance.RandomDateTime();
            mock.TransNum  = TestUtility.Instance.RandomString(5, false);;
            mock.TransCode = TestUtility.Instance.RandomString(2, false);;
            mock.ExpId     = TestUtility.Instance.RandomString(5, false);;
            mock.GoodsId   = TestUtility.Instance.RandomString(6, false);;
            mock.Qty       = (decimal)TestUtility.Instance.RandomShort();
            mock.UnitSymb  = TestUtility.Instance.RandomString(3, false);;
            mock.Price     = (decimal)TestUtility.Instance.RandomShort();
            mock.MercType  = TestUtility.Instance.RandomString(2, false);;
            mock.UserId    = (decimal)TestUtility.Instance.RandomShort();
            mock.Remark    = TestUtility.Instance.RandomString(99, false);;
            mock.Recnum    = (decimal)TestUtility.Instance.RandomShort();
            mock.Status    = TestUtility.Instance.RandomBoolean();
            mock.EndQty    = (decimal)TestUtility.Instance.RandomShort();


            // create a temporary collection and add the item to it
            TList <OnOrder> tempMockCollection = new TList <OnOrder>();

            tempMockCollection.Add(mock);
            tempMockCollection.Remove(mock);


            return((OnOrder)mock);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Deep load all OnOrder children.
        /// </summary>
        private void Step_03_DeepLoad_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                int count = -1;
                mock           = CreateMockInstance(tm);
                mockCollection = DataRepository.OnOrderProvider.GetPaged(tm, 0, 10, out count);

                DataRepository.OnOrderProvider.DeepLoading += new EntityProviderBaseCore <OnOrder, OnOrderKey> .DeepLoadingEventHandler(
                    delegate(object sender, DeepSessionEventArgs e)
                {
                    if (e.DeepSession.Count > 3)
                    {
                        e.Cancel = true;
                    }
                }
                    );

                if (mockCollection.Count > 0)
                {
                    DataRepository.OnOrderProvider.DeepLoad(tm, mockCollection[0]);
                    System.Console.WriteLine("OnOrder instance correctly deep loaded at 1 level.");

                    mockCollection.Add(mock);
                    // DataRepository.OnOrderProvider.DeepSave(tm, mockCollection);
                }

                //normally one would commit here
                //tm.Commit();
                //IDisposable will Rollback Transaction since it's left uncommitted
            }
        }
Exemplo n.º 4
0
        ///<summary>
        ///  Update the Typed OnOrder Entity with modified mock values.
        ///</summary>
        static public void UpdateMockInstance(TransactionManager tm, OnOrder mock)
        {
            OnOrderTest.UpdateMockInstance_Generated(tm, mock);

            // make any alterations necessary
            // (i.e. for DB check constraints, special test cases, etc.)
            SetSpecialTestData(mock);
        }
Exemplo n.º 5
0
 internal void OnOrderCall(Order order)
 {
     OnOrder?.Invoke(order);
     if (Orders == null)
     {
         Orders = new List <Order>();
     }
     Orders.Add(order);
 }
Exemplo n.º 6
0
        /// <summary>
        /// Check the foreign key dal methods.
        /// </summary>
        private void Step_10_FK_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                OnOrder entity = CreateMockInstance(tm);
                bool    result = DataRepository.OnOrderProvider.Insert(tm, entity);

                Assert.IsTrue(result, "Could Not Test FK, Insert Failed");
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Test methods exposed by the EntityHelper class.
        /// </summary>
        private void Step_20_TestEntityHelper_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                mock = CreateMockInstance(tm);

                OnOrder entity = mock.Copy() as OnOrder;
                entity = (OnOrder)mock.Clone();
                Assert.IsTrue(OnOrder.ValueEquals(entity, mock), "Clone is not working");
            }
        }
Exemplo n.º 8
0
        ///<summary>
        ///  Returns a Typed OnOrder Entity with mock values.
        ///</summary>
        static public OnOrder CreateMockInstance(TransactionManager tm)
        {
            // get the default mock instance
            OnOrder mock = OnOrderTest.CreateMockInstance_Generated(tm);

            // make any alterations necessary
            // (i.e. for DB check constraints, special test cases, etc.)
            SetSpecialTestData(mock);

            // return the modified object
            return(mock);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Check the indexes dal methods.
        /// </summary>
        private void Step_11_IX_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                OnOrder entity = CreateMockInstance(tm);
                bool    result = DataRepository.OnOrderProvider.Insert(tm, entity);

                Assert.IsTrue(result, "Could Not Test IX, Insert Failed");


                OnOrder t0 = DataRepository.OnOrderProvider.GetByTransNumGoodsId(tm, entity.TransNum, entity.GoodsId);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Serialize the mock OnOrder entity into a temporary file.
        /// </summary>
        private void Step_06_SerializeEntity_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                mock = CreateMockInstance(tm);
                string fileName = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "temp_OnOrder.xml");

                EntityHelper.SerializeXml(mock, fileName);
                Assert.IsTrue(System.IO.File.Exists(fileName), "Serialized mock not found");

                System.Console.WriteLine("mock correctly serialized to a temporary file.");
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Inserts a mock OnOrder entity into the database.
        /// </summary>
        private void Step_01_Insert_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                mock = CreateMockInstance(tm);
                Assert.IsTrue(DataRepository.OnOrderProvider.Insert(tm, mock), "Insert failed");

                System.Console.WriteLine("DataRepository.OnOrderProvider.Insert(mock):");
                System.Console.WriteLine(mock);

                //normally one would commit here
                //tm.Commit();
                //IDisposable will Rollback Transaction since it's left uncommitted
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Serialize a OnOrder collection into a temporary file.
        /// </summary>
        private void Step_08_SerializeCollection_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                string fileName = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "temp_OnOrderCollection.xml");

                mock = CreateMockInstance(tm);
                TList <OnOrder> mockCollection = new TList <OnOrder>();
                mockCollection.Add(mock);

                EntityHelper.SerializeXml(mockCollection, fileName);

                Assert.IsTrue(System.IO.File.Exists(fileName), "Serialized mock collection not found");
                System.Console.WriteLine("TList<OnOrder> correctly serialized to a temporary file.");
            }
        }
Exemplo n.º 13
0
 ///<summary>
 ///  Update the Typed OnOrder Entity with modified mock values.
 ///</summary>
 static public void UpdateMockInstance_Generated(TransactionManager tm, OnOrder mock)
 {
     mock.TranDate  = TestUtility.Instance.RandomDateTime();
     mock.TranTime  = TestUtility.Instance.RandomString(5, false);;
     mock.DeliverDt = TestUtility.Instance.RandomDateTime();
     mock.TransCode = TestUtility.Instance.RandomString(2, false);;
     mock.ExpId     = TestUtility.Instance.RandomString(5, false);;
     mock.Qty       = (decimal)TestUtility.Instance.RandomShort();
     mock.UnitSymb  = TestUtility.Instance.RandomString(3, false);;
     mock.Price     = (decimal)TestUtility.Instance.RandomShort();
     mock.MercType  = TestUtility.Instance.RandomString(2, false);;
     mock.UserId    = (decimal)TestUtility.Instance.RandomShort();
     mock.Remark    = TestUtility.Instance.RandomString(99, false);;
     mock.Recnum    = (decimal)TestUtility.Instance.RandomShort();
     mock.Status    = TestUtility.Instance.RandomBoolean();
     mock.EndQty    = (decimal)TestUtility.Instance.RandomShort();
 }
Exemplo n.º 14
0
        /// <summary>
        /// Test Find using the Query class
        /// </summary>
        private void Step_30_TestFindByQuery_Generated()
        {
            using (TransactionManager tm = CreateTransaction())
            {
                //Insert Mock Instance
                OnOrder mock   = CreateMockInstance(tm);
                bool    result = DataRepository.OnOrderProvider.Insert(tm, mock);

                Assert.IsTrue(result, "Could Not Test FindByQuery, Insert Failed");

                OnOrderQuery query = new OnOrderQuery();

                query.AppendEquals(OnOrderColumn.TranDate, mock.TranDate.ToString());
                query.AppendEquals(OnOrderColumn.TranTime, mock.TranTime.ToString());
                if (mock.DeliverDt != null)
                {
                    query.AppendEquals(OnOrderColumn.DeliverDt, mock.DeliverDt.ToString());
                }
                query.AppendEquals(OnOrderColumn.TransNum, mock.TransNum.ToString());
                query.AppendEquals(OnOrderColumn.TransCode, mock.TransCode.ToString());
                query.AppendEquals(OnOrderColumn.ExpId, mock.ExpId.ToString());
                query.AppendEquals(OnOrderColumn.GoodsId, mock.GoodsId.ToString());
                query.AppendEquals(OnOrderColumn.Qty, mock.Qty.ToString());
                query.AppendEquals(OnOrderColumn.UnitSymb, mock.UnitSymb.ToString());
                query.AppendEquals(OnOrderColumn.Price, mock.Price.ToString());
                query.AppendEquals(OnOrderColumn.MercType, mock.MercType.ToString());
                query.AppendEquals(OnOrderColumn.UserId, mock.UserId.ToString());
                query.AppendEquals(OnOrderColumn.Remark, mock.Remark.ToString());
                query.AppendEquals(OnOrderColumn.Recnum, mock.Recnum.ToString());
                if (mock.Status != null)
                {
                    query.AppendEquals(OnOrderColumn.Status, mock.Status.ToString());
                }
                if (mock.EndQty != null)
                {
                    query.AppendEquals(OnOrderColumn.EndQty, mock.EndQty.ToString());
                }

                TList <OnOrder> results = DataRepository.OnOrderProvider.Find(tm, query);

                Assert.IsTrue(results.Count == 1, "Find is not working correctly.  Failed to find the mock instance");
            }
        }
Exemplo n.º 15
0
 /// <summary>
 /// Make any alterations necessary (i.e. for DB check constraints, special test cases, etc.)
 /// </summary>
 /// <param name="mock">Object to be modified</param>
 static private void SetSpecialTestData(OnOrder mock)
 {
     //Code your changes to the data object here.
 }
        private void StartReceiving(ClientWebSocket webSocket)
        {
            new Thread(async() =>
            {
                string receivedMessage;
                WebSocketReceiveResult result;
                var message = new ArraySegment <byte>(new byte[ReceiveChunkSize]);

                try
                {
                    while (webSocket.State == WebSocketState.Open)
                    {
                        receivedMessage = string.Empty;
                        do
                        {
                            result = await webSocket.ReceiveAsync(message, CancellationToken.None);
                            if (result.MessageType == WebSocketMessageType.Close)
                            {
                                Disconnect(webSocket);
                                break;
                            }
                            else
                            {
                                receivedMessage += Encoding.UTF8.GetString(message.Take(result.Count).ToArray());
                            }
                        }while (!result.EndOfMessage);

                        if (string.IsNullOrEmpty(receivedMessage))
                        {
                            continue;
                        }

                        var token             = JToken.Parse(receivedMessage);
                        var messageKey        = token.SelectToken("k").Value <string>();
                        var messageValueToken = token.SelectToken("v");
                        switch (messageKey)
                        {
                        case "book":
                            OnMarketBook?.Invoke(this, new EventArgs <MarketBook>()
                            {
                                Data = messageValueToken.ToObject <MarketBook[]>()
                            });
                            break;

                        case "bookdelta":
                            OnBookDeltaItem?.Invoke(this, new EventArgs <BookDeltaItem>()
                            {
                                Data = messageValueToken.ToObject <BookDeltaItem[]>()
                            });
                            break;

                        case "trade":
                            OnTrade?.Invoke(this, new EventArgs <Trade>()
                            {
                                Data = messageValueToken.ToObject <Trade[]>()
                            });
                            break;

                        case "allorders":
                            OnAllOrders?.Invoke(this, new EventArgs <Order>()
                            {
                                Data = messageValueToken.ToObject <Order[]>()
                            });
                            break;

                        case "order":
                            OnOrder?.Invoke(this, new EventArgs <Order>()
                            {
                                Data = messageValueToken.ToObject <Order[]>()
                            });
                            break;
                        }
                    }
                }
                catch
                {
                    OnDisconnected?.Invoke(this, new EventArgs());
                }
                finally
                {
                    webSocket.Dispose();
                }
            }).Start();
        }