Example #1
0
        public void SiloAddress_ToFrom_ParsableString()
        {
            string testName = TestContext.TestName;

            Console.WriteLine(testName);

            SiloAddress address1 = SiloAddress.NewLocalAddress(12345);

            string      addressStr1 = address1.ToParsableString();
            SiloAddress addressObj1 = SiloAddress.FromParsableString(addressStr1);

            Console.WriteLine("Convert -- From: {0} Got result string: '{1}' object: {2}",
                              address1, addressStr1, addressObj1);

            Assert.AreEqual(address1, addressObj1, "SiloAddress equal after To-From-ParsableString");

            //const string addressStr2 = "127.0.0.1-11111-144611139";
            const string addressStr2    = "127.0.0.1:11111@144611139";
            SiloAddress  addressObj2    = SiloAddress.FromParsableString(addressStr2);
            string       addressStr2Out = addressObj2.ToParsableString();

            Console.WriteLine("Convert -- From: {0} Got result string: '{1}' object: {2}",
                              addressStr2, addressStr2Out, addressObj2);

            Assert.AreEqual(addressStr2, addressStr2Out, "SiloAddress equal after From-To-ParsableString");
        }
Example #2
0
 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
 {
     SiloAddress addr = (SiloAddress)value;
     writer.WriteStartObject();
     writer.WritePropertyName("SiloAddress");
     writer.WriteValue(addr.ToParsableString());
     writer.WriteEndObject();
 }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            SiloAddress sa = (SiloAddress)value;
            JObject     jo = new JObject();

            jo.Add("SiloAddress", sa.ToParsableString());
            jo.WriteTo(writer);
        }
 private static FabricSiloInfo CreateSiloInfo(SiloAddress silo, SiloAddress gateway, string name)
 {
     return(new FabricSiloInfo
     {
         Name = name,
         Silo = silo.ToParsableString(),
         Gateway = gateway.ToParsableString()
     });
 }
Example #5
0
        public async Task <MembershipTableData> ReadRow(SiloAddress key)
        {
            if (_logger.IsEnabled(LogLevel.Trace))
            {
                _logger.Trace($"RedisMembershipTable.ReadRow called with key: {key}.");
            }

            var hashKeyData  = $"{key.ToParsableString()}-data";
            var hashKeyAlive = $"{key.ToParsableString()}-alive";
            var hashKeyEtag  = $"{key.ToParsableString()}-etag";

            RedisValue[] redisFields = { TableVersionKey, TableVersionEtagKey, hashKeyData, hashKeyAlive, hashKeyEtag };
            RedisValue[] results;
            try
            {
                results = await _db.HashGetAsync(_clusterKey, redisFields);
            }
            catch (Exception ex)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.Debug("RedisMembershipTable.ReadRow failed: {0}", ex);
                }

                throw;
            }

            var tableVersion     = results[0].IsNull ? 0 : (int)results[0];
            var tableVersionEtag = results[1].IsNull ? "" : (string)results[1];

            if (results.Skip(2).Any(result => string.IsNullOrEmpty(result)))
            {
                return(new MembershipTableData(new List <Tuple <MembershipEntry, string> >(),
                                               new TableVersion(tableVersion, tableVersionEtag)));
            }

            var data  = JsonConvert.DeserializeObject <MembershipEntry>(results[2], SerializationSettings.Value);
            var alive = JsonConvert.DeserializeObject <DateTime>(results[3], SerializationSettings.Value);
            var etag  = (string)results[4];

            data.IAmAliveTime = alive;
            return(new MembershipTableData(new Tuple <MembershipEntry, string>(data, etag),
                                           new TableVersion(tableVersion, tableVersionEtag)));
        }
Example #6
0
        /// <summary>
        /// Gets the local replica grain. Use of this grain requires a co-hosted deployment (caller api and silo in the same process so the local <see cref="SiloAddress"/> is available.
        /// </summary>
        /// <param name="factory">The factory to use.</param>
        /// <param name="address">This must be the local silo address.</param>
        /// <param name="key">Sharding key of the data graph.</param>
        public static ISimpleStreamingReplicaGrain GetSimpleStreamingReplicaGrain(this IGrainFactory factory, SiloAddress address, string key)
        {
            if (factory is null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            key = key.Trim().ToUpperInvariant();
            var parsable = address.ToParsableString();

            return(factory.GetGrain <ISimpleStreamingReplicaGrain>($"{key}|{parsable}"));
        }
Example #7
0
        public void SiloAddress_ToFrom_ParsableString()
        {
            SiloAddress address1 = SiloAddress.NewLocalAddress(12345);

            string      addressStr1 = address1.ToParsableString();
            SiloAddress addressObj1 = SiloAddress.FromParsableString(addressStr1);

            output.WriteLine("Convert -- From: {0} Got result string: '{1}' object: {2}",
                             address1, addressStr1, addressObj1);

            Assert.Equal(address1, addressObj1); // SiloAddress equal after To-From-ParsableString

            //const string addressStr2 = "127.0.0.1-11111-144611139";
            const string addressStr2    = "127.0.0.1:11111@144611139";
            SiloAddress  addressObj2    = SiloAddress.FromParsableString(addressStr2);
            string       addressStr2Out = addressObj2.ToParsableString();

            output.WriteLine("Convert -- From: {0} Got result string: '{1}' object: {2}",
                             addressStr2, addressStr2Out, addressObj2);

            Assert.Equal(addressStr2, addressStr2Out); // SiloAddress equal after From-To-ParsableString
        }
 internal static String ParseDeploymentSiloKey(String deploymentId, SiloAddress siloAddress)
 {
     return String.Format("{0}{1}{2}", ParseDeploymentKVPrefix(deploymentId), KeySeparator, siloAddress.ToParsableString());
 }
 internal static string FormatDeploymentSiloKey(string deploymentId, string rootKvFolder, SiloAddress siloAddress)
 {
     return($"{FormatDeploymentKVPrefix(deploymentId, rootKvFolder)}{KeySeparator}{siloAddress.ToParsableString()}");
 }
        public async Task <MembershipTableData> ReadRow(SiloAddress key)
        {
            List <Tuple <MembershipEntry, string> >      entries = new List <Tuple <MembershipEntry, string> >();
            IOperationResult <CouchBaseSiloRegistration> row     = await bucket.GetAsync <CouchBaseSiloRegistration>(key.ToParsableString()).ConfigureAwait(false);

            if (row.Success)
            {
                entries.Add(CouchbaseSiloRegistrationmUtility.ToMembershipEntry(row.Value, row.Cas.ToString()));
            }
            return(new MembershipTableData(entries, new TableVersion(0, "0")));
        }
Example #11
0
 private static string ConvertToRowPath(SiloAddress siloAddress)
 {
     return("/" + siloAddress.ToParsableString());
 }
 internal static String ParseDeploymentSiloKey(String deploymentId, SiloAddress siloAddress)
 {
     return(String.Format("{0}{1}{2}", ParseDeploymentKVPrefix(deploymentId), KeySeparator, siloAddress.ToParsableString()));
 }
 private static string BuildKey(SiloAddress address)
 {
     return(address.ToParsableString().Replace('.', '_'));
 }
        public bool UpdateIAmAlive(string clusterId, SiloAddress address, DateTime iAmAlivetime)
        {
            bool   ret  = false;
            string val  = iAmAlivetime.ToString();
            var    item = list.ToArray().Where((x) => x != null && x.DeploymentId == clusterId && x.ParsableAddress == address.ToParsableString()).First();

            if (item != null)
            {
                item.IAmAliveTime = iAmAlivetime;
                ret = true;
            }

            return(ret);
        }
        public MembershipTableData ToMembershipTableData(SiloAddress key)
        {
            var data = list.ToArray().Where((x) => x != null)
                       .Select(x => x.ToMembershipEntryTuple())
                       .ToList();

            var items = data.TakeWhile((x) => x.Item1.SiloAddress.ToParsableString() == key.ToParsableString()).ToList();

            return(new MembershipTableData(items, _tableVersion));
        }