Пример #1
0
 public void GDID_1()
 {
     var gdid = new GDID(2, 5, 89078);
     Assert.AreEqual(2,     gdid.Era);
     Assert.AreEqual(5,     gdid.Authority);
     Assert.AreEqual(89078, gdid.Counter);
 }
Пример #2
0
        public static void ASYNC_GetSchemaAndTestVariousTypes(ICRUDDataStore store)
        {
            var schema = store.GetSchemaAsync(new Query("CRUD.Types.Load")).Result;

            var row = new DynamicRow(schema);
            row["GDID"] = new GDID(0, 145);
            row["SCREEN_NAME"] = "User1";
            row["STRING_NAME"] = "Some user 1";
            row["CHAR_NAME"] = "Some user 2";
            row["BOOL_CHAR"] = 'T';
            row["BOOL_BOOL"] = true;

            row["AMOUNT"] = 145670.23m;

            row["DOB"] = new DateTime(1980,12,1);

            store.Insert( row );

            var row2 = store.LoadOneRow(new Query("CRUD.Types.Load", new GDID(0, 145)));

            Assert.NotNull(row2);
            Assert.AreEqual(145, row2["GDID"]);
            Assert.AreEqual("User1", row2["Screen_Name"]);
            Assert.AreEqual("Some user 1", row2["String_Name"]);
            Assert.AreEqual("Some user 2", row2["Char_Name"]);

            Assert.AreEqual(true, row2["BOOL_Char"].AsBool());
            Assert.AreEqual(true, row2["BOOL_BOOL"].AsBool());

            Assert.AreEqual(145670.23m, row2["Amount"]);

            Assert.AreEqual(1980, row2["DOB"].AsDateTime().Year);
        }
Пример #3
0
 public void GDID_7()
 {
     var gdid1 = new GDID(0, 0, 12321);
     var gdid2 = new GDID(0, 1, 0);
     Assert.AreEqual(-1, gdid1.CompareTo(gdid2));
     Assert.IsFalse( gdid1.Equals(gdid2));
 }
Пример #4
0
 public void GDID_10()
 {
     var gdid = new GDID(1293, 3, 57);
     var s = gdid.ToString();
     Console.WriteLine(s);
     Assert.AreEqual("1293:3:57", s);
 }
Пример #5
0
 public void GDID_10()
 {
     var gdid = new GDID(1293, 3, 57);
     var s = gdid.ToString();
     Console.WriteLine(s);
     Assert.AreEqual("GDID[1293:3458764513820540985(3,57)]", s);
 }
Пример #6
0
        public static Charge MakeFake(GDID gdid)
        {
            var c = new Charge()
              {
            Amount = new Amount("usd", gdid.ID % 1897),
            Qty = (int)(gdid.ID % 29),
            G_Product = gdid,
            Notes = new String('n', (int)(gdid.ID % 137))
              };

              return c;
        }
Пример #7
0
      public void GDID_9()
      {
        var gdid1 = new GDID(0, 3, 57);
        var gdid2 = new GDID(0, 3, 57);
        Assert.AreEqual(0, gdid1.CompareTo(gdid2));
        Assert.IsTrue( gdid1.Equals(gdid2));

        var gdid3 = new GDID(1, 3, 57);
        var gdid4 = new GDID(2, 3, 57);
        Assert.AreEqual(-1, gdid3.CompareTo(gdid4));
        Assert.IsFalse( gdid3.Equals(gdid4));
      }
Пример #8
0
        public static PersonRow MakeFake(GDID parentGdid)
        {
            var age = (int)(parentGdid.ID % 99);

              var tags = NFX.ExternalRandomGenerator.Instance.NextRandomInteger > 0 ? new string[NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(1, 20)] : null;

              if (tags != null)
            for (int i = 0; i < tags.Length; i++)
            {
              tags[i] = ((char)('a' + i)) + "tag";
            }

              var pers = new PersonRow()
              {
            ID = parentGdid,
            Name = NFX.Parsing.NaturalTextGenerator.Generate(30),
            Age = age,
            DOB = DateTime.Now.AddYears(-age),
            Sex = (parentGdid.ID % 2) == 0 ? Sex.Male : Sex.Female,
            Income = (parentGdid.ID % 79) * 1000,
            Debt = (parentGdid.ID % 11) * 1000,
            Rating = (parentGdid.ID % 2) == 0 ? (double?)null : 3.25,
            Notes = parentGdid.ToString(),
            Voter = (parentGdid.ID % 2) == 0 ? (bool?)null : true,
            MilitarySvc = (parentGdid.ID % 2) == 0 ? (bool?)null : false,
            Address1 = NFX.Parsing.NaturalTextGenerator.Generate(50),
            Address2 = (parentGdid.ID % 7) == 0 ? NFX.Parsing.NaturalTextGenerator.Generate(50) : null,
            City = (parentGdid.ID % 2) == 0 ? "Magdaburg" : "Odessa On Don",
            State = "OH",
            Zip = "44000" + (parentGdid.ID % 999),
            Phone1 = "(555) 222-3222",
            Phone2 = (parentGdid.ID % 3) == 0 ? "(555) 737-9789" : null,
            Email1 = "*****@*****.**",
            Email2 = (parentGdid.ID % 5) == 0 ? "*****@*****.**" : null,
            URL = (parentGdid.ID % 2) == 0 ? "https://ibm.com/products/" + parentGdid.ID : null,
            Tags = tags
              };

              return pers;
        }
Пример #9
0
 public override IEnumerable <SummaryRating> GetNodeSummaries(GDID gNode)
 {
     yield break;
 }
Пример #10
0
 public CheckTRow(PilePointer ptr, GDID id, string address)
 {
     Ptr     = ptr;
     Id      = id;
     Address = address;
 }
Пример #11
0
        public void DeleteSeveral_TwoTables_ByteArray(bool speed, int durationSec, int putMin, int putMax, int delFactor, int payloadSizeMin, int payloadSizeMax, bool isParallel)
        {
            using (var cache = new LocalCache())
                using (var pile = new DefaultPile(cache))
                {
                    cache.Pile          = pile;
                    cache.PileAllocMode = speed ? AllocationMode.FavorSpeed : AllocationMode.ReuseSpace;
                    cache.Start();

                    var startTime = DateTime.UtcNow;
                    var tasks     = new List <Task>();
                    for (var t = 0; t < (isParallel ? (System.Environment.ProcessorCount - 1) : 1); t++)
                    {
                        tasks.Add(Task.Factory.StartNew(() =>
                        {
                            var list = new List <Tuple <int, GDID, int, byte, byte> >();
                            var tA   = cache.GetOrCreateTable <GDID>("A");
                            var tB   = cache.GetOrCreateTable <GDID>("B");
                            ulong k  = 0;
                            var wlc  = 0;

                            while (true)
                            {
                                if ((DateTime.UtcNow - startTime).TotalSeconds >= durationSec)
                                {
                                    break;
                                }

                                var putCount = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(putMin, putMax);
                                for (int i = 0; i < putCount; i++)
                                {
                                    var payloadSize = NFX.ExternalRandomGenerator
                                                      .Instance.NextScaledRandomInteger(payloadSizeMin, payloadSizeMax);
                                    var val = new byte[payloadSize];
                                    val[0]  = (byte)NFX.ExternalRandomGenerator.Instance.NextRandomInteger;
                                    val[payloadSize - 1] = (byte)NFX.ExternalRandomGenerator.Instance.NextRandomInteger;

                                    var tableId = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, 1);
                                    var table   = tableId == 0 ? tA : tB;
                                    var key     = new GDID((uint)Thread.CurrentThread.ManagedThreadId, k);

                                    table.Put(key, val);

                                    list.Add(new Tuple <int, GDID, int, byte, byte>(tableId, key, payloadSize - 1, val[0], val[payloadSize - 1]));
                                    k++;
                                }

                                int delCount = putCount / delFactor;
                                for (int i = 0; i < delCount; i++)
                                {
                                    while (true && list.Count > 0)
                                    {
                                        var idx     = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, list.Count - 1);
                                        var element = list[idx];
                                        var table   = element.Item1 == 0 ? tA : tB;
                                        var key     = element.Item2;

                                        var removed = table.Remove(key);
                                        list.RemoveAt(idx);
                                        if (removed)
                                        {
                                            break;
                                        }
                                    }
                                }

                                // get several random elements
                                if (list.Count > 64 && NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, 100) > 98)
                                {
                                    var toRead = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(8, 64);
                                    wlc++;
                                    if (wlc % 125 == 0)
                                    {
                                        Console.WriteLine("Thread {0} is reading {1} elements"
                                                          .Args(Thread.CurrentThread.ManagedThreadId, toRead));
                                    }
                                    for (var j = 0; j < toRead && list.Count > 0; j++)
                                    {
                                        var idx     = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, list.Count - 1);
                                        var element = list[idx];
                                        var table   = element.Item1 == 0 ? tA : tB;
                                        var key     = element.Item2;

                                        var buf = table.Get(key) as byte[];
                                        if (buf == null)
                                        {
                                            list.RemoveAt(idx);
                                            continue;
                                        }
                                        Assert.AreEqual(element.Item4, buf[0]);
                                        Assert.AreEqual(element.Item5, buf[element.Item3]);
                                    }
                                }

                                if (list.Count == Int32.MaxValue)
                                {
                                    list = new List <Tuple <int, GDID, int, byte, byte> >();
                                }
                            }

                            // total check
                            Console.WriteLine("Thread {0} is doing final read of {1} elements".Args(Thread.CurrentThread.ManagedThreadId, list.Count));
                            foreach (var element in list)
                            {
                                var table = element.Item1 == 0 ? tA : tB;
                                var val   = table.Get(element.Item2) as byte[];
                                if (val == null)
                                {
                                    continue;
                                }
                                Assert.AreEqual(element.Item4, val[0]);
                                Assert.AreEqual(element.Item5, val[element.Item3]);
                            }
                            return;
                        }, TaskCreationOptions.LongRunning));
                    }
                    Task.WaitAll(tasks.ToArray());
                }
        }
Пример #12
0
        public void GDID_Zero()
        {
            var zero = GDID.Zero;
            Assert.IsTrue( zero.IsZero );

            zero = new GDID(0,1,0);
            Assert.IsFalse( zero.IsZero );
        }
Пример #13
0
 public void ____Deserialize(GDID id, PID pid, DateTime ts, string about)
 {
     m_SysID = id; m_SysPID = pid; m_SysTimestampUTC = ts; m_SysAbout = about;
 }
Пример #14
0
 public static Query ID_EQ_GDID(GDID id)
 {
   var result = new Query();
   result.Set( NFX.Serialization.BSON.RowConverter.GDID_CLRtoBSON(_ID, id) );
   return result;
 }
Пример #15
0
 public void GDID_6()
 {
     var gdid = new GDID(0, 0, 0);
     Assert.AreEqual(0, gdid.Authority);
     Assert.AreEqual(0, gdid.Counter);
 }
Пример #16
0
 public override bool IsCommentedByAuthor(GDID gNode, GDID gAuthor, string dimension)
 {
     return(false);
 }
Пример #17
0
        public void Templatization_QuerySinglePrimitiveTypes_Inference()
        {
            var qryInt = new BSONDocument("{ int: '$$value' }",    true, new TemplateArg("value", int.MinValue));
              var qryLong = new BSONDocument("{ long: '$$value' }",   true, new TemplateArg("value", long.MaxValue));
              var qryBool = new BSONDocument("{ bool: '$$value' }",   true, new TemplateArg("value", true));
              var qryDouble = new BSONDocument("{ double: '$$value' }", true, new TemplateArg("value", double.Epsilon));
              var qryString = new BSONDocument("{ string: '$$value' }", true, new TemplateArg("value", "string"));
              var qryArray = new BSONDocument("{ array: '$$value' }", true, new TemplateArg("value", new object[] { "string", int.MaxValue, false }));
              var gdid = new GDID(uint.MaxValue, GDID.AUTHORITY_MAX, GDID.COUNTER_MAX);
              var qryGDID = new BSONDocument("{ gdid: '$$value' }", true, new TemplateArg("value", gdid));
              var dec = 150666333000.1234M;
              var qryDecimal = new BSONDocument("{ decimal: '$$value' }", true, new TemplateArg("value", dec));
              var amount = new Amount("RUB", dec);
              var qryAmount = new BSONDocument("{ amount: '$$value' }", true, new TemplateArg("value", amount));

              Assert.AreEqual(qryInt.Count, 1);
              Assert.IsNotNull(qryInt["int"]);
              Assert.IsInstanceOf<BSONInt32Element>(qryInt["int"]);
              Assert.AreEqual(int.MinValue, qryInt["int"].ObjectValue);

              Assert.AreEqual(qryLong.Count, 1);
              Assert.IsNotNull(qryLong["long"]);
              Assert.IsInstanceOf<BSONInt64Element>(qryLong["long"]);
              Assert.AreEqual(long.MaxValue, qryLong["long"].ObjectValue);

              Assert.AreEqual(qryBool.Count, 1);
              Assert.IsNotNull(qryBool["bool"]);
              Assert.IsInstanceOf<BSONBooleanElement>(qryBool["bool"]);
              Assert.AreEqual(true, qryBool["bool"].ObjectValue);

              Assert.AreEqual(qryDouble.Count, 1);
              Assert.IsNotNull(qryDouble["double"]);
              Assert.IsInstanceOf<BSONDoubleElement>(qryDouble["double"]);
              Assert.AreEqual(double.Epsilon, qryDouble["double"].ObjectValue);

              Assert.AreEqual(qryString.Count, 1);
              Assert.IsNotNull(qryString["string"]);
              Assert.IsInstanceOf<BSONStringElement>(qryString["string"]);
              Assert.AreEqual("string", qryString["string"].ObjectValue);

              Assert.AreEqual(qryArray.Count, 1);
              Assert.IsNotNull(qryArray["array"]);
              Assert.IsInstanceOf<BSONArrayElement>(qryArray["array"]);
              var elements = ((BSONArrayElement)qryArray["array"]).Value;
              Assert.IsNotNull(elements);
              Assert.AreEqual(elements.Length, 3);
              Assert.IsInstanceOf<BSONStringElement>(elements[0]);
              Assert.IsInstanceOf<BSONInt32Element>(elements[1]);
              Assert.IsInstanceOf<BSONBooleanElement>(elements[2]);
              Assert.AreEqual("string", elements[0].ObjectValue);
              Assert.AreEqual(int.MaxValue, elements[1].ObjectValue);
              Assert.AreEqual(false, elements[2].ObjectValue);

              Assert.AreEqual(qryGDID.Count, 1);
              Assert.IsNotNull(qryGDID["gdid"]);
              Assert.IsInstanceOf<BSONBinaryElement>(qryGDID["gdid"]);
              var binGDID = ((BSONBinaryElement)qryGDID["gdid"]).Value.Data;
              var expectedGDID = ((BSONBinaryElement)RowConverter.GDID_CLRtoBSON("gdid", gdid)).Value.Data;
              Assert.IsTrue(expectedGDID.SequenceEqual(binGDID));

              Assert.AreEqual(qryDecimal.Count, 1);
              Assert.IsNotNull(qryDecimal["decimal"]);
              Assert.IsInstanceOf<BSONInt64Element>(qryDecimal["decimal"]);
              Assert.AreEqual(RowConverter.Decimal_CLRtoBSON("decimal", dec).ObjectValue, qryDecimal["decimal"].ObjectValue);

              Assert.AreEqual(qryAmount.Count, 1);
              Assert.IsNotNull(qryAmount["amount"]);
              Assert.IsInstanceOf<BSONDocumentElement>(qryAmount["amount"]);
              var docAmount = ((BSONDocumentElement)qryAmount["amount"]).Value;
              Assert.AreEqual("RUB", docAmount["c"].ObjectValue);
              Assert.AreEqual(RowConverter.Decimal_CLRtoBSON("decimal", dec).ObjectValue, docAmount["v"].ObjectValue);
        }
Пример #18
0
 public override Comment Respond(GDID gAuthorNode, CommentID parent, string content, byte[] data)
 {
     return(default(Comment));
 }
Пример #19
0
 public override Comment Create(GDID gAuthorNode, GDID gTargetNode, string dimension, string content, byte[] data,
                                PublicationState publicationState, RatingValue rating = RatingValue.Undefined, DateTime?epoch = null)
 {
     return(default(Comment));
 }
Пример #20
0
 public void GDID_3()
 {
     var gdid = new GDID(0, 12, GDID.COUNTER_MAX + 1);
 }
Пример #21
0
 public void GDID_2()
 {
     var gdid = new GDID(0, 16, 89078);
 }
Пример #22
0
        public void GDID_11()
        {
            var gdid = new GDID(0x01020304, 0xfacaca00aa55aa55);

            Assert.IsTrue("01,02,03,04,fa,ca,ca,00,aa,55,aa,55".AsByteArray().SequenceEqual(gdid.Bytes));
        }
Пример #23
0
        public static void TypedRowTestVariousTypes(ICRUDDataStore store)
        {
                
            var row = new Types();
            row["GDID"] = new GDID(0, 234);
            row["SCREEN_NAME"] = "User1";
            row["STRING_NAME"] = "Some user 1";
            row["CHAR_NAME"] = "Some user 2";
            row["BOOL_CHAR"] = true; //notice TRUE for both char and bool columns below 
            row["BOOL_BOOL"] = true;

            row["AMOUNT"] = 145670.23m;

            row["DOB"] = new DateTime(1980,12,1);

            store.Insert( row );

            var row2 = store.LoadOneRow(new Query("CRUD.Types.Load", new GDID(0, 234)));

            Assert.NotNull(row2);
            Assert.AreEqual(234, row2["GDID"]);
            Assert.AreEqual("User1", row2["Screen_Name"]);
            Assert.AreEqual("Some user 1", row2["String_Name"]);
            Assert.AreEqual("Some user 2", row2["Char_Name"]);

            Assert.AreEqual(true, row2["BOOL_Char"].AsBool());
            Assert.AreEqual(true, row2["BOOL_BOOL"].AsBool());

            Assert.AreEqual(145670.23m, row2["Amount"]);

            Assert.AreEqual(1980, row2["DOB"].AsDateTime().Year);
        }
Пример #24
0
 public override GraphChangeStatus Complain(CommentID commentId, GDID gAuthorNode, string kind, string message)
 {
     return(GraphChangeStatus.NotFound);
 }
Пример #25
0
        /// <summary>
        /// Creates an Elink instance initialized with GDID of 0 Era having its ID set to ulong value
        /// </summary>
        public ELink(UInt64 id, byte[] metadata)
        {
            m_GDID = new GDID(0, id);
                m_Metadata = metadata;

                if (m_Metadata!=null && ((m_Metadata.Length*2) > MAX_LINK_CHAR_SIZE))
                  throw new NFXException(StringConsts.ELINK_CHAR_LENGTH_LIMIT_ERROR.Args("metadata[{0}]".Args(m_Metadata.Length)));
        }
Пример #26
0
 public PeopleNamesParcel(GDID id, List <string> data) : base(id, data)
 {
 }
Пример #27
0
        public void GDID_BinBufferAndTryParseBin()
        {
            var gdid = new GDID(347827,15,0xaedb3434b);
            var buf = gdid.Bytes;
            var hex = "0x"+buf.ToDumpString(DumpFormat.Hex).Replace(" ","");

            Console.WriteLine(hex);

            GDID gdid2;
            Assert.IsTrue(GDID.TryParse(hex, out gdid2));
            Assert.AreEqual(gdid, gdid2);
        }
Пример #28
0
 public HumanParcel(GDID id, Human data) : base(id, data)
 {
 }
Пример #29
0
        public void NoGrowth_ByteArray(bool speed, int durationSec, int payloadSizeMin, int payloadSizeMax, int countMin, int countMax)
        {
            using (var cache = new LocalCache())
                using (var pile = new DefaultPile(cache))
                {
                    cache.Pile          = pile;
                    cache.PileAllocMode = speed ? AllocationMode.FavorSpeed : AllocationMode.ReuseSpace;
                    cache.Start();

                    var startTime = DateTime.UtcNow;
                    var tasks     = new List <Task>();
                    for (var t = 0; t < (System.Environment.ProcessorCount - 1); t++)
                    {
                        tasks.Add(Task.Factory.StartNew(() =>
                        {
                            var tA   = cache.GetOrCreateTable <GDID>("A");
                            var list = new List <CheckByteArray>();
                            bool put = true;

                            while (true)
                            {
                                if ((DateTime.UtcNow - startTime).TotalSeconds >= durationSec)
                                {
                                    return;
                                }

                                if (put)
                                {
                                    var cnt = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(countMin, countMax);
                                    for (int i = 0; i < cnt; i++)
                                    {
                                        var payloadSize = NFX.ExternalRandomGenerator
                                                          .Instance.NextScaledRandomInteger(payloadSizeMin, payloadSizeMax);
                                        var val = new byte[payloadSize];
                                        val[0]  = (byte)NFX.ExternalRandomGenerator.Instance.NextRandomInteger;
                                        val[payloadSize - 1] = (byte)NFX.ExternalRandomGenerator.Instance.NextRandomInteger;
                                        var key = new GDID((uint)Thread.CurrentThread.ManagedThreadId, (ulong)i);

                                        tA.Put(key, val);

                                        var element = new CheckByteArray(key, payloadSize - 1, val[0], val[payloadSize - 1]);
                                        list.Add(element);
                                    }
                                    Console.WriteLine("Thread {0} put {1} objects".Args(Thread.CurrentThread.ManagedThreadId, list.Count));
                                    put = false;
                                }
                                else
                                {
                                    var i = 0;
                                    for (var j = 0; j < list.Count; j++)
                                    {
                                        var element = list[j];
                                        var buf     = tA.Get(element.Key) as byte[];
                                        if (buf != null)
                                        {
                                            Assert.AreEqual(element.FirstByte, buf[0]);
                                            Assert.AreEqual(element.LastByte, buf[element.IdxLast]);
                                            tA.Remove(element.Key);
                                            i++;
                                        }
                                    }
                                    Console.WriteLine("Thread {0} deleted {1} objects".Args(Thread.CurrentThread.ManagedThreadId, i));
                                    list.Clear();
                                    put = true;
                                }
                            }
                        }, TaskCreationOptions.LongRunning));
                    }
                    Task.WaitAll(tasks.ToArray());
                }
        }
Пример #30
0
 public Parcel Load(Type tParcel, GDID id, object shardingId = null, DataVeracity veracity = DataVeracity.Maximum, DataCaching cacheOpt = DataCaching.LatestData, int?cacheMaxAgeSec = null, ISession session = null)
 {
     throw new NotImplementedException();
 }
Пример #31
0
 public GDIDCredentials(GDID gdid)
 {
     m_GDID = gdid;
 }
Пример #32
0
            /// <summary>
            /// Called when creating new Parcel instances by the original author.
            /// The new instance is in 'ParcelState.Creating' state
            /// </summary>
            protected Parcel(GDID id, object payload)
            {
                m_GDID = id;
                if (payload==null) 
                 throw new DistributedDataAccessException(StringConsts.ARGUMENT_ERROR+GetType().FullName+".ctor(payload==null)");

                m_State = ParcelState.Creating;
                m_Payload = payload;
            }
Пример #33
0
 public System.Threading.Tasks.Task <T> LoadAsync <T>(GDID id, object shardingId = null, DataVeracity veracity = DataVeracity.Maximum, DataCaching cacheOpt = DataCaching.LatestData, int?cacheMaxAgeSec = null, ISession session = null) where T : Parcel
 {
     throw new NotImplementedException();
 }
Пример #34
0
        public void DeleteOne_ByteArray(bool speed, int durationSec, int payloadSizeMin, int payloadSizeMax, int deleteFreq, bool isParallel)
        {
            using (var cache = new LocalCache())
                using (var pile = new DefaultPile(cache))
                {
                    cache.Pile          = pile;
                    cache.PileAllocMode = speed ? AllocationMode.FavorSpeed : AllocationMode.ReuseSpace;
                    cache.Start();

                    var startTime = DateTime.UtcNow;
                    var tasks     = new List <Task>();
                    for (var t = 0; t < (isParallel ? (System.Environment.ProcessorCount - 1) : 1); t++)
                    {
                        tasks.Add(Task.Factory.StartNew(() =>
                        {
                            var i    = 0;
                            var list = new List <CheckByteArray>();
                            var tA   = cache.GetOrCreateTable <GDID>("A");
                            var wlc  = 0;
                            while (true)
                            {
                                if ((DateTime.UtcNow - startTime).TotalSeconds >= durationSec)
                                {
                                    break;
                                }

                                var payloadSize      = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(payloadSizeMin, payloadSizeMax);
                                var val              = new byte[payloadSize];
                                val[0]               = (byte)NFX.ExternalRandomGenerator.Instance.NextRandomInteger;
                                val[payloadSize - 1] = (byte)NFX.ExternalRandomGenerator.Instance.NextRandomInteger;

                                var key = new GDID((uint)Thread.CurrentThread.ManagedThreadId, (ulong)i);
                                tA.Put(key, val);

                                list.Add(new CheckByteArray(key, payloadSize - 1, val[0], val[payloadSize - 1]));

                                // delete ONE random element
                                if (i > 0 && i % deleteFreq == 0)
                                {
                                    while (true && list.Count > 0)
                                    {
                                        var idx     = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, list.Count - 1);
                                        key         = list[idx].Key;
                                        var removed = tA.Remove(key);
                                        list.RemoveAt(idx);
                                        if (removed)
                                        {
                                            break;
                                        }
                                    }
                                }

                                // get several random elements
                                if (list.Count > 64 && NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, 100) > 98)
                                {
                                    var toRead = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(8, 64);
                                    wlc++;
                                    if (wlc % 125 == 0)
                                    {
                                        Console.WriteLine("Thread {0} is reading {1} elements, total {2}"
                                                          .Args(Thread.CurrentThread.ManagedThreadId, toRead, list.Count));
                                    }
                                    for (var k = 0; k < toRead && list.Count > 0; k++)
                                    {
                                        var idx     = NFX.ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, list.Count - 1);
                                        var element = list[idx];
                                        var buf     = tA.Get(element.Key) as byte[];
                                        if (buf == null)
                                        {
                                            list.RemoveAt(idx);
                                            continue;
                                        }
                                        Assert.AreEqual(element.FirstByte, buf[0]);
                                        Assert.AreEqual(element.LastByte, buf[element.IdxLast]);
                                    }
                                }

                                if (i == Int32.MaxValue)
                                {
                                    i = 0;
                                }
                                else
                                {
                                    i++;
                                }

                                if (list.Count == Int32.MaxValue)
                                {
                                    list = new List <CheckByteArray>();
                                }
                            }

                            Console.WriteLine("Thread {0} is doing final read of {1} elements, tableCount {2}"
                                              .Args(Thread.CurrentThread.ManagedThreadId, list.Count, tA.Count));
                            foreach (var element in list)
                            {
                                var buf = tA.Get(element.Key) as byte[];
                                if (buf == null)
                                {
                                    continue;
                                }
                                Assert.AreEqual(element.FirstByte, buf[0]);
                                Assert.AreEqual(element.LastByte, buf[element.IdxLast]);
                            }
                        }, TaskCreationOptions.LongRunning));
                    }
                    Task.WaitAll(tasks.ToArray());
                }
        }
Пример #35
0
            /// <summary>
            /// Called by device to load parcel from storage. 
            /// The new instance is in 'ParcelState.Sealed' state.
            /// Business logic devs - do not call 
            /// </summary>
            protected Parcel(GDID id, object payload, IReplicationVersionInfo versInfo)
            {
               m_GDID = id;

               if (payload==null) 
                 throw new DistributedDataAccessException(StringConsts.ARGUMENT_ERROR+GetType().FullName+".ctor(payload==null)");

               if (versInfo==null) 
                 throw new DistributedDataAccessException(StringConsts.ARGUMENT_ERROR+GetType().FullName+".ctor(versInfo==null)");

               m_State = ParcelState.Sealed;
               m_Payload = payload;
               m_ReplicationVersionInfo = versInfo;
            }
Пример #36
0
 public bool Remove(Type tParcel, GDID id, object shardingId = null, ISession session = null)
 {
     throw new NotImplementedException();
 }
Пример #37
0
        public static CheckoutRow MakeFake(GDID gdid)
        {
            var ch = new CheckoutRow()
              {
            ID = gdid,
            FileName = "myface_" + gdid.ID.ToString(),
            Date = DateTime.Now,
            StartOffset = gdid.ID * 20,
            G_Block = gdid,

            Address1 = NFX.Parsing.NaturalTextGenerator.Generate(50),
            Address2 = (gdid.ID % 7) == 0 ? NFX.Parsing.NaturalTextGenerator.Generate(50) : null
              };

              var chCnt = (int)(gdid.ID % 10);
              ch.Charges = new Charge[chCnt];

              for (int i = 0; i < chCnt; i++)
            ch.Charges[i] = Charge.MakeFake(gdid);

              return ch;
        }
Пример #38
0
 public bool Remove <T>(GDID id, object shardingId = null, ISession session = null) where T : Parcel
 {
     throw new NotImplementedException();
 }
Пример #39
0
        public static PurchaseRow MakeFake(GDID gdid)
        {
            var purch = new PurchaseRow()
              {
            ID = gdid,
            Customer = PersonRow.MakeFake(gdid),
            Date = DateTime.Now,
            Amount = new Amount("usd", gdid.ID % 1897),
            SalesPerson = (gdid.ID % 2) == 0 ? null : PersonRow.MakeFake(gdid),
            G_Product = new GDID(0, gdid.ID + 157)
              };

              return purch;
        }
Пример #40
0
 public System.Threading.Tasks.Task <bool> RemoveAsync <T>(GDID id, object shardingId = null, ISession session = null) where T : Parcel
 {
     throw new NotImplementedException();
 }
Пример #41
0
 public BSONObjectID(GDID gdid)
     : this(gdid.Bytes)
 {
 }
Пример #42
0
 public CRUDOperations ForNode(GDID gNode)
 {
     return(DataStore.PartitionedOperationsFor(SocialConsts.MDB_AREA_NODE, gNode));
 }
Пример #43
0
 public static BSONBinaryElement GDID_CLRtoBSON(string name, GDID gdid)
 {
   //As tested on Feb 27, 2015
   //BinData works faster than string 8% and stores 40%-60% less data in index and data segment
   //Also, SEQUENTIAL keys (big endian) yield 30% smaller indexes (vs non-sequential)
   //ObjectId() is very similar if not identical to BinData(UserDefined)
   var bin = new BSONBinary(BSONBinaryType.UserDefined, gdid.Bytes);
   return name != null ?  new BSONBinaryElement(name, bin) : new BSONBinaryElement( bin);
 }
Пример #44
0
        private void decode()     //link -> props
        {
            List <byte> data = new List <byte>(32);

            char pc = (char)0;

            for (var i = 0; i < m_Link.Length; i++)
            {
                char c = m_Link[i];
                if (c == '-' || c == ' ')
                {
                    continue;
                }
                if (pc != (char)0)
                {
                    var seg = string.Concat(pc, c).ToUpperInvariant();
                    pc = (char)0;
                    var sid = 0;
                    if (!RALPHABET.TryGetValue(seg, out sid))
                    {
                        throw new NFXException(StringConsts.ELINK_CHAR_COMBINATION_ERROR.Args(m_Link, seg));
                    }
                    data.Add((byte)sid);
                }
                else
                {
                    pc = c;
                }
            }

            if (data.Count < 4 || pc != (char)0)
            {
                throw new NFXException(StringConsts.ELINK_CHAR_LENGTH_ERROR.Args(m_Link));
            }

            //2 control bytes
            var lead1 = data[0];
            var rnd   = (lead1 & 0xf0) >> 4;

            rnd |= rnd << 4;
            var authority = lead1 & 0x0f;


            var lead2     = data[1] ^ rnd;
            var eraLength = (lead2 & 0xf0) >> 4;
            var idLength  = lead2 & 0x0f;

            var csum = data[2] ^ rnd;

            if (eraLength > 4 || idLength < 1 || idLength > 8)
            {
                throw new NFXException(StringConsts.ELINK_SEGMENT_LENGTH_ERROR.Args(m_Link));
            }


            if (data.Count - 3 < eraLength + idLength)
            {
                throw new NFXException(StringConsts.ELINK_CHAR_LENGTH_ERROR.Args(m_Link));
            }

            UInt32 era = 0;
            var    idx = 3;

            if (eraLength > 0)
            {
                for (var i = 0; i < eraLength; i++, idx++)
                {
                    era |= (UInt32)((byte)(data[idx] ^ rnd)) << (8 * i);
                }
            }

            UInt64 id = 0;

            if (idLength > 0)
            {
                for (var i = 0; i < idLength; i++, idx++)
                {
                    id |= (UInt64)((byte)(data[idx] ^ rnd)) << (8 * i);
                }
            }

            id |= ((ulong)authority << 60);


            byte[] metadata = null;
            if (idx < data.Count)
            {
                metadata = new byte[data.Count - idx];
                for (var j = 0; idx < data.Count; idx++, j++)
                {
                    metadata[j] = (byte)(data[idx] ^ rnd);
                }
            }

            var thiscsum = crc(era, id, metadata);

            if (csum != thiscsum)
            {
                throw new NFXException(StringConsts.ELINK_CSUM_MISMATCH_ERROR.Args(m_Link));
            }

            m_GDID     = new GDID(era, id);
            m_Metadata = metadata;
        }
Пример #45
0
        public static void GetSchemaAndTestFullGDID(ICRUDDataStore store)
        {
            var schema = store.GetSchema(new Query("CRUD.FullGDID.Load"));
                
            var row = new DynamicRow(schema);

            var key = new GDID(179, 1, 1234567890);
            Console.WriteLine( key.Bytes.ToDumpString(DumpFormat.Hex));

            row["GDID"] = new GDID(179, 1, 1234567890);
            Console.WriteLine( ((byte[])row["GDID"]).ToDumpString(DumpFormat.Hex) );

            row["VARGDID"] = new GDID(12, 9, 9876543210);
            row["STRING_NAME"] = "DA DA DA!";

            store.Insert( row );

            var row2 = store.LoadOneRow(new Query("CRUD.FullGDID.Load", key, typeof(FullGDID))) as FullGDID;

            Assert.NotNull(row2);
            Assert.AreEqual(key, row2.GDID);
            Assert.AreEqual(new GDID(12, 9, 9876543210), row2.VARGDID);
            Assert.AreEqual("DA DA DA!", row2["String_Name"]);
        }
Пример #46
0
 public DatedGDIDWithISOKey(DateTime date, GDID gdid, string iso)
 {
     GDID = gdid;
     ISO  = IOMiscUtils.PackISO3CodeToInt(iso);
     YMD  = DatedGDIDWithISOKey.DateToYMD(date);
 }
Пример #47
0
        //link -> props
        private void decode()
        {
            List<byte> data = new List<byte>(32);

               char pc = (char)0;
               for(var i=0; i<m_Link.Length; i++)
               {
                    char c = m_Link[i];
                    if (c=='-' || c==' ') continue;
                    if (pc!=(char)0)
                    {
                        var seg = string.Concat(pc, c).ToUpperInvariant();
                        pc = (char)0;
                        var sid = 0;
                        if (!RALPHABET.TryGetValue(seg, out sid))
                            throw new NFXException(StringConsts.ELINK_CHAR_COMBINATION_ERROR.Args(m_Link, seg));
                        data.Add((byte)sid);
                    }
                    else
                     pc = c;
               }

               if (data.Count<4 || pc!=(char)0)
                    throw new NFXException(StringConsts.ELINK_CHAR_LENGTH_ERROR.Args(m_Link));

               //2 control bytes
               var lead1 = data[0];
                 var rnd = (lead1 & 0xf0) >> 4;
                 rnd |= rnd << 4;
                 var authority = lead1 & 0x0f;

               var lead2 = data[1] ^ rnd;
                 var eraLength = (lead2 & 0xf0) >> 4;
                 var idLength = lead2 & 0x0f;

               var csum = data[2] ^ rnd;

               if (eraLength>4 || idLength<1 || idLength>8)
                  throw new NFXException(StringConsts.ELINK_SEGMENT_LENGTH_ERROR.Args(m_Link));

               if (data.Count-3 < eraLength + idLength)
                   throw new NFXException(StringConsts.ELINK_CHAR_LENGTH_ERROR.Args(m_Link));

                UInt32 era = 0;
                var idx = 3;
                if (eraLength>0)
                {
                  for(var i=0; i<eraLength; i++,idx++)
                      era |=  (UInt32)((byte)(data[idx] ^ rnd)) << (8 * i);
                }

                UInt64 id = 0;
                if (idLength>0)
                {
                  for(var i=0; i<idLength; i++,idx++)
                      id |=  (UInt64)((byte)(data[idx] ^ rnd)) << (8 * i);
                }

                id |= ((ulong)authority << 60);

                byte[] metadata = null;
                if (idx<data.Count)
                {
                  metadata = new byte[data.Count - idx];
                  for(var j=0; idx<data.Count; idx++, j++)
                    metadata[j] = (byte)(data[idx] ^ rnd);
                }

                var thiscsum = crc(era, id, metadata);
                if (csum!=thiscsum)
                  throw new NFXException(StringConsts.ELINK_CSUM_MISMATCH_ERROR.Args(m_Link));

                m_GDID = new GDID(era, id);
                m_Metadata = metadata;
        }
Пример #48
0
 public TwoGDIDWithISOKey(GDID gdid1, GDID gdid2, string iso)
 {
     GDID1 = gdid1;
     GDID2 = gdid2;
     ISO   = IOMiscUtils.PackISO3CodeToInt(iso);
 }
Пример #49
0
 public void GDID_5()
 {
     var gdid = new GDID(0, 0, GDID.COUNTER_MAX);
     Assert.AreEqual(0,                gdid.Authority);
     Assert.AreEqual(GDID.COUNTER_MAX, gdid.Counter);
 }
Пример #50
0
 public GDIDWithStrHash(GDID gdid, string key)
 {
     GDID = gdid;
     Hash = GDIDWithStrHash.StrToHash(key);
 }
Пример #51
0
 public void GDID_BinBuffer()
 {
     var gdid = new GDID(0,1,0x4b);
     var buf = gdid.Bytes;
     Console.WriteLine(buf.ToDumpString(DumpFormat.Hex));
     var gdid2 = new GDID(buf);
     Assert.AreEqual(gdid, gdid2);
 }
Пример #52
0
 public GDIDWithISOKey(GDID gdid, string iso)
 {
     GDID = gdid;
     ISO  = IOMiscUtils.PackISO3CodeToInt(iso);
 }
Пример #53
0
 public void GDID_JSON_1()
 {
     var gdid = new GDID(2, 3, 57);
     var s = gdid.ToJSON();
     Console.WriteLine(s);
     Assert.AreEqual("\"2:3:57\"", s);
 }
Пример #54
0
 public void GDID_2()
 {
     var gdid = new GDID(0, 16, 89078);
 }
Пример #55
0
 public GDIDWithInt(GDID gdid, int val)
 {
     GDID = gdid;
     Int  = val;
 }
Пример #56
0
        public void GDID_TryParse()
        {
            GDID parsed;

            Assert.IsTrue(GDID.TryParse("1:2:3", out parsed));
            Assert.AreEqual(1, parsed.Era);
            Assert.AreEqual(2, parsed.Authority);
            Assert.AreEqual(3, parsed.Counter);

            Assert.IsTrue(GDID.TryParse("231:2:3123", out parsed));
            Assert.AreEqual(231, parsed.Era);
            Assert.AreEqual(2, parsed.Authority);
            Assert.AreEqual(3123, parsed.Counter);

            Assert.IsTrue(GDID.TryParse("   231:2:3123   ", out parsed));
            Assert.AreEqual(231, parsed.Era);
            Assert.AreEqual(2, parsed.Authority);
            Assert.AreEqual(3123, parsed.Counter);

            Assert.IsTrue(GDID.TryParse("31 : 2:  3123", out parsed));
            Assert.AreEqual(31, parsed.Era);
            Assert.AreEqual(2, parsed.Authority);
            Assert.AreEqual(3123, parsed.Counter);

            Assert.IsFalse(GDID.TryParse("-1:2:3123", out parsed));
            Assert.IsFalse(GDID.TryParse("1:18:3123", out parsed));
            Assert.IsFalse(GDID.TryParse(":18:3123", out parsed));
            Assert.IsFalse(GDID.TryParse("::3123", out parsed));
            Assert.IsFalse(GDID.TryParse("1::3", out parsed));
            Assert.IsFalse(GDID.TryParse("1::", out parsed));
            Assert.IsFalse(GDID.TryParse("1:-:-", out parsed));
            Assert.IsFalse(GDID.TryParse("1: : ", out parsed));

            Assert.IsFalse(GDID.TryParse("FTGEJK-IR", out parsed));


            //0x 00 00 00 00 10 00 00 00 00 00 00 4B
            //   ----era---- ------ulong -----------
            Assert.IsTrue(GDID.TryParse("0x00000000100000000000004B", out parsed));
            Assert.AreEqual(new GDID(0, 1, 0x4b), parsed);
            Assert.IsTrue(GDID.TryParse("00000000100000000000004B", out parsed));
            Assert.AreEqual(new GDID(0, 1, 0x4b), parsed);
            Assert.IsTrue(GDID.TryParse(new GDID(0, 1, 0x4b).ToHexString(), out parsed));
            Assert.AreEqual(new GDID(0, 1, 0x4b), parsed);

            GDID?nullable;

            Assert.IsTrue(GDID.TryParse("0X00000000100000000000004b", out nullable));
            Assert.IsTrue(nullable.HasValue);
            Assert.AreEqual(new GDID(0, 1, 0x4b), nullable.Value);

            Assert.IsTrue(GDID.TryParse("00000000100000000000004b", out nullable));
            Assert.IsTrue(nullable.HasValue);
            Assert.AreEqual(new GDID(0, 1, 0x4b), nullable.Value);

            Assert.IsTrue(GDID.TryParse(new GDID(0, 1, 0x4b).ToHexString(), out nullable));
            Assert.IsTrue(nullable.HasValue);
            Assert.AreEqual(new GDID(0, 1, 0x4b), nullable.Value);

            Assert.IsFalse(GDID.TryParse("0x0001000000000000", out nullable));//too short
            Assert.IsFalse(nullable.HasValue);

            Assert.IsFalse(GDID.TryParse("0x00000303030303003031000000000000", out nullable));//too long
            Assert.IsFalse(nullable.HasValue);
        }
Пример #57
0
        public void GDID_11()
        {
            var gdid = new GDID(0x01020304, 0xfacaca00aa55aa55);

            Assert.IsTrue( "01,02,03,04,fa,ca,ca,00,aa,55,aa,55".AsByteArray().SequenceEqual( gdid.Bytes ) );
        }
Пример #58
0
 private Dictionary <GDID, User> getBucket(GDID id)
 {
     return(m_Data[id.Counter & 0xff]);
 }
Пример #59
0
 public void GDID_3()
 {
     var gdid = new GDID(0, 12, GDID.COUNTER_MAX+1);
 }
Пример #60
0
 public GDIDWithISOKey(GDID gdid, string iso)
 {
     GDID = gdid;
     ISO  = ISOtoInt(iso);
 }