Ejemplo n.º 1
0
        public void Should_serialize_null()
        {
            var serialized   = EnvironmentNodeDataSerializer.Serialize(null);
            var deserialized = EnvironmentNodeDataSerializer.Deserialize(envName, serialized);

            deserialized.Should().BeEquivalentTo(new EnvironmentInfo(envName, null, null));
        }
Ejemplo n.º 2
0
        public static byte[] SetEnvironmentProperties(string environment, Func <IEnvironmentInfoProperties, IEnvironmentInfoProperties> update, byte[] bytes)
        {
            var environmentInfo = EnvironmentNodeDataSerializer.Deserialize(environment, bytes);

            var newProperties = update(environmentInfo.Properties);

            return(EnvironmentNodeDataSerializer.Serialize(new EnvironmentInfo(environment, environmentInfo.ParentEnvironment, newProperties)));
        }
Ejemplo n.º 3
0
        public async Task <bool> TryCreateEnvironmentAsync(IEnvironmentInfo environmentInfo)
        {
            var createRequest = new CreateRequest(pathHelper.BuildEnvironmentPath(environmentInfo.Environment), CreateMode.Persistent)
            {
                Data = EnvironmentNodeDataSerializer.Serialize(environmentInfo)
            };

            return((await zooKeeperClient.CreateAsync(createRequest).ConfigureAwait(false)).IsSuccessful);
        }
Ejemplo n.º 4
0
        protected void CreateEnvironmentNode(string environment, string parent = null, IReadOnlyDictionary <string, string> properties = null)
        {
            var info = new EnvironmentInfo(environment, parent, properties);
            var data = EnvironmentNodeDataSerializer.Serialize(info);

            var path = PathHelper.BuildEnvironmentPath(environment);

            CreateOrUpdate(path, data);
        }
Ejemplo n.º 5
0
 public void Should_serialize_and_deserialize(string parent)
 {
     foreach (var properties in TestProperties())
     {
         var info         = new EnvironmentInfo(envName, parent, properties);
         var serialized   = EnvironmentNodeDataSerializer.Serialize(info);
         var deserialized = EnvironmentNodeDataSerializer.Deserialize(envName, serialized);
         deserialized.Should().BeEquivalentTo(info);
     }
 }
Ejemplo n.º 6
0
        private void Update(string name, VersionedContainer <EnvironmentInfo> container)
        {
            if (isDisposed)
            {
                return;
            }

            try
            {
                var environmentPath = pathHelper.BuildEnvironmentPath(name);

                var environmentExists = zooKeeperClient.Exists(new ExistsRequest(environmentPath)
                {
                    Watcher = nodeWatcher
                });
                if (!environmentExists.IsSuccessful)
                {
                    return;
                }

                if (environmentExists.Stat == null)
                {
                    container.Clear();
                }
                else
                {
                    if (!container.NeedUpdate(environmentExists.Stat.ModifiedZxId))
                    {
                        return;
                    }

                    var environmentData = zooKeeperClient.GetData(new GetDataRequest(environmentPath)
                    {
                        Watcher = nodeWatcher
                    });
                    if (environmentData.Status == ZooKeeperStatus.NodeNotFound)
                    {
                        container.Clear();
                    }
                    if (!environmentData.IsSuccessful)
                    {
                        return;
                    }

                    var info = EnvironmentNodeDataSerializer.Deserialize(name, environmentData.Data);
                    container.Update(environmentData.Stat.ModifiedZxId, info);
                }
            }
            catch (Exception error)
            {
                log.Error(error, "Failed to update '{Environment}' environment.", name);
            }
        }
Ejemplo n.º 7
0
        public async Task <IEnvironmentInfo> GetEnvironmentAsync(string environment)
        {
            var data = await zooKeeperClient.GetDataAsync(new GetDataRequest(pathHelper.BuildEnvironmentPath(environment))).ConfigureAwait(false);

            if (data.Status == ZooKeeperStatus.NodeNotFound)
            {
                return(null);
            }

            data.EnsureSuccess();
            var envData = EnvironmentNodeDataSerializer.Deserialize(environment, data.Data);

            return(envData);
        }
Ejemplo n.º 8
0
 public void Should_deserialize_empty()
 {
     EnvironmentNodeDataSerializer.Deserialize(envName, new byte[0]).Should().BeEquivalentTo(new EnvironmentInfo(envName, null, null));
 }
Ejemplo n.º 9
0
        public static byte[] SetEnvironmentParent(string environment, string newParent, byte[] bytes)
        {
            var environmentInfo = EnvironmentNodeDataSerializer.Deserialize(environment, bytes);

            return(EnvironmentNodeDataSerializer.Serialize(new EnvironmentInfo(environment, newParent, environmentInfo.Properties)));
        }