Пример #1
0
        public void CanResolveOneEmptyArraysAndOneWithValue()
        {
            using (var ctx = new JsonOperationContext(4096, 16 * 1024, 32 * 1024, SharedMultipleUseFlag.None))
            {
                DynamicJsonValue obj1 = new DynamicJsonValue();
                DynamicJsonValue obj2 = new DynamicJsonValue();
                obj1["name"] = new DynamicJsonArray {
                    1
                };
                obj2["name"] = new DynamicJsonArray();

                var conflictResovlerAdvisor = new ConflictResolverAdvisor(
                    new List <BlittableJsonReaderObject> {
                    ctx.ReadObject(obj1, "doc/1"), ctx.ReadObject(obj2, "doc/1")
                },
                    ctx);
                var resolvled = conflictResovlerAdvisor.Resolve().Document;

                BlittableJsonReaderArray name;
                resolvled.TryGet("name", out name);
                Assert.Equal(">>>> auto merged array start", name[0].ToString());
                Assert.Equal((long)1, name[1]);
                Assert.Equal("<<<< auto merged array end", name[2].ToString());
            }
        }
Пример #2
0
        protected static void AddProjectionToResult(DynamicJsonValue result, string key, object fieldVal)
        {
            if (fieldVal is List <object> list)
            {
                var array = new DynamicJsonArray();
                for (int i = 0; i < list.Count; i++)
                {
                    if (list[i] is Document d)
                    {
                        array.Add(d.Data);
                    }
                    else
                    {
                        array.Add(list[i]);
                    }
                }
                fieldVal = array;
            }
            if (fieldVal is Document d2)
            {
                fieldVal = d2.Data;
            }

            result[key] = fieldVal;
        }
Пример #3
0
        public override DynamicJsonValue ToJson()
        {
            var json = base.ToJson();

            json[nameof(Items)] = new DynamicJsonArray(Items.Select(x => x.ToJson()));
            return(json);
        }
Пример #4
0
        public void CanMergeArrays()
        {
            using (var ctx = new JsonOperationContext(4096, 16 * 1024, 32 * 1024, SharedMultipleUseFlag.None))
            {
                DynamicJsonValue obj1 = new DynamicJsonValue();
                DynamicJsonValue obj2 = new DynamicJsonValue();
                obj1["Nicks"] = new DynamicJsonArray {
                    "Oren"
                };
                obj2["Nicks"] = new DynamicJsonArray {
                    "Ayende"
                };

                var conflictResovlerAdvisor = new ConflictResolverAdvisor(
                    new List <BlittableJsonReaderObject> {
                    ctx.ReadObject(obj1, "doc/1"), ctx.ReadObject(obj2, "doc/1")
                },
                    ctx);
                var resolvled = conflictResovlerAdvisor.Resolve().Document;

                BlittableJsonReaderArray nicks;
                resolvled.TryGet("Nicks", out nicks);
                Assert.Equal(">>>> auto merged array start", nicks[0].ToString());
                Assert.Equal("Oren", nicks[1].ToString());
                Assert.Equal("Ayende", nicks[2].ToString());
                Assert.Equal("<<<< auto merged array end", nicks[3].ToString());
            }
        }
Пример #5
0
        public Task GetReplicationIncomingActivityTimes()
        {
            using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var item in Database.ReplicationLoader.IncomingLastActivityTime)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Key"] = new DynamicJsonValue
                            {
                                ["SourceDatabaseId"]   = item.Key.SourceDatabaseId,
                                ["SourceDatabaseName"] = item.Key.SourceDatabaseName,
                                ["SourceMachineName"]  = item.Key.SourceMachineName,
                                ["SourceUrl"]          = item.Key.SourceUrl
                            },
                            ["Value"] = item.Value
                        });
                    }

                    context.Write(writer, new DynamicJsonValue
                    {
                        ["Stats"] = data
                    });
                }
            return(Task.CompletedTask);
        }
Пример #6
0
        private Task GetConflictsForDocument(string docId)
        {
            long maxEtag = 0;

            using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                    using (context.OpenReadTransaction())
                    {
                        var array     = new DynamicJsonArray();
                        var conflicts = context.DocumentDatabase.DocumentsStorage.ConflictsStorage.GetConflictsFor(context, docId);

                        foreach (var conflict in conflicts)
                        {
                            if (maxEtag < conflict.Etag)
                            {
                                maxEtag = conflict.Etag;
                            }

                            array.Add(new DynamicJsonValue
                            {
                                [nameof(GetConflictsResult.Conflict.ChangeVector)] = conflict.ChangeVector,
                                [nameof(GetConflictsResult.Conflict.Doc)]          = conflict.Doc,
                                [nameof(GetConflictsResult.Conflict.LastModified)] = conflict.LastModified
                            });
                        }

                        context.Write(writer, new DynamicJsonValue
                        {
                            [nameof(GetConflictsResult.Id)]          = docId,
                            [nameof(GetConflictsResult.LargestEtag)] = maxEtag,
                            [nameof(GetConflictsResult.Results)]     = array
                        });
                        return(Task.CompletedTask);
                    }
        }
        public Task GetReplicationOugoingFailureStats()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var item in Database.DocumentReplicationLoader.OutgoingFailureInfo)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Key"] = new DynamicJsonValue
                            {
                                ["Url"]                  = item.Key.Url,
                                ["Database"]             = item.Key.Database,
                                ["Disabled"]             = item.Key.Disabled,
                                ["IgnoredClient"]        = item.Key.IgnoredClient,
                                ["SkipIndexReplication"] = item.Key.SkipIndexReplication,
                                ["SpecifiedCollections"] = item.Key.SpecifiedCollections
                            },
                            ["Value"] = new DynamicJsonValue
                            {
                                ["ErrorCount"] = item.Value.ErrorCount,
                                ["NextTimout"] = item.Value.NextTimout
                            }
                        });
                    }

                    context.Write(writer, data);
                }
            return(Task.CompletedTask);
        }
Пример #8
0
        public async Task GetReplicationOutgoingFailureStats()
        {
            using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                await using (var writer = new AsyncBlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var item in Database.ReplicationLoader.OutgoingFailureInfo)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Key"] = new DynamicJsonValue
                            {
                                [nameof(item.Key.Url)]      = item.Key.Url,
                                [nameof(item.Key.Database)] = item.Key.Database,
                                [nameof(item.Key.Disabled)] = item.Key.Disabled
                            },
                            ["Value"] = new DynamicJsonValue
                            {
                                ["ErrorsCount"]                         = item.Value.Errors.Count,
                                [nameof(item.Value.Errors)]             = new DynamicJsonArray(item.Value.Errors.Select(e => e.ToString())),
                                [nameof(item.Value.NextTimeout)]        = item.Value.NextTimeout,
                                [nameof(item.Value.RetryOn)]            = item.Value.RetryOn,
                                [nameof(item.Value.External)]           = item.Value.External,
                                [nameof(item.Value.DestinationDbId)]    = item.Value.DestinationDbId,
                                [nameof(item.Value.LastHeartbeatTicks)] = item.Value.LastHeartbeatTicks,
                            }
                        });
                    }

                    context.Write(writer, new DynamicJsonValue
                    {
                        ["Stats"] = data
                    });
                }
        }
Пример #9
0
        public override DynamicJsonValue ToJson(JsonOperationContext context)
        {
            var djv = base.ToJson(context);

            if (Commands != null)
            {
                var dja = new DynamicJsonArray();
                foreach (var command in Commands)
                {
                    dja.Add(command.ToJson(context));
                }
                djv[nameof(Commands)] = dja;
            }

            if (RemoveCommands != null)
            {
                var dja2 = new DynamicJsonArray();
                foreach (var command in RemoveCommands)
                {
                    dja2.Add(command.ToJson(context));
                }

                djv[nameof(RemoveCommands)] = dja2;
            }

            return(djv);
        }
Пример #10
0
        public JsonInfo(string json)
        {
            var jsonObject = Json.Decode(json);

            status  = (int)jsonObject.status;
            payload = (DynamicJsonArray)jsonObject.payload;
        }
Пример #11
0
        public DynamicJsonValue ToJson()
        {
            var djv = new DynamicJsonValue();

            var dict = new DynamicJsonValue();

            djv[nameof(RequestLatencies)] = dict;

            foreach (var key in RequestLatencies.Keys)
            {
                var queue = RequestLatencies[key];
                if (queue == null)
                {
                    continue;
                }

                var list = new DynamicJsonArray();
                foreach (var details in queue)
                {
                    list.Add(details.ToJson());
                }

                dict[key] = list;
            }

            return(djv);
        }
Пример #12
0
        }// EOM

        public List <string> GetAttributeValues(int id)
        {
            List <string> attributeValues = new List <string>();

            Rclient.BaseUrl = new Uri($"{Config.endpoint}/api/v2/nodes/{id}/categories");
            var request = new RestRequest(Method.GET).AddHeader("otcsticket", LoginViewModel.ticket);

            //var response = Rclient.Execute<PocoResult>(request);
            var response = Rclient.Execute <PocoResult>(request);


            var test = Json.Decode(response.Content);

            DynamicJsonArray test2 = test.results;


            var list = new List <Object>();

            foreach (var index in test2)
            {
                list.Add(index);
            }



            Console.WriteLine(test.data.categories);

            return(attributeValues);
        }
Пример #13
0
            public static DynamicJsonValue ToJson(ServerStore serverStore, TransactionOperationContext context)
            {
                var djv = new DynamicJsonValue
                {
                    [$"@{nameof(General)}"] = General.ToJson()
                };

                var mapping = SnmpWatcher.GetMapping(serverStore, context);

                foreach (var kvp in mapping)
                {
                    var record = serverStore.LoadDatabaseRecord(kvp.Key, out _);
                    if (record == null)
                    {
                        continue;
                    }

                    var array = new DynamicJsonArray();
                    foreach (var field in typeof(Databases).GetFields())
                    {
                        var fieldValue = GetFieldValue(field);
                        var oid        = string.Format(fieldValue.Oid, kvp.Value);
                        array.Add(CreateJsonItem(Root + oid, fieldValue.Description));
                    }

                    djv[kvp.Key] = new DynamicJsonValue
                    {
                        [$"@{nameof(General)}"] = array,
                        [nameof(Indexes)]       = Indexes.ToJson(serverStore, context, record, kvp.Value)
                    };
                }

                return(djv);
            }
Пример #14
0
        public override DynamicJsonValue ToJsonWithFilter(CanAccessDatabase filter)
        {
            var items = new DynamicJsonArray();

            foreach (var mountPointUsage in Items)
            {
                var usageAsJson = mountPointUsage.ToJsonWithFilter(filter);
                if (usageAsJson != null)
                {
                    usageAsJson.RemoveInMemoryPropertyByName(nameof(MountPointUsage.Items));

                    items.Add(usageAsJson);
                }
            }

            if (items.Count == 0)
            {
                return(null);
            }

            var json = base.ToJson();

            json[nameof(Items)] = items;

            return(json);
        }
        public Task GetAllTombstones()
        {
            var start = GetIntValueQueryString("start", false) ?? 0;
            var take  = GetIntValueQueryString("take", false) ?? 1024;

            HttpContext.Response.StatusCode = 200;
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                    using (context.OpenReadTransaction())
                    {
                        var tombstones =
                            context.DocumentDatabase.DocumentsStorage.GetTombstonesFrom(context, 0, start, take).ToList();
                        var array = new DynamicJsonArray();
                        foreach (var tombstone in tombstones)
                        {
                            array.Add(new DynamicJsonValue
                            {
                                ["Key"]          = tombstone.Key.ToString(),
                                ["Collection"]   = tombstone.Collection.ToString(),
                                ["Etag"]         = tombstone.Etag,
                                ["DeletedEtag"]  = tombstone.DeletedEtag,
                                ["ChangeVector"] = tombstone.ChangeVector.ToJson()
                            });
                        }

                        context.Write(writer, array);
                    }

            return(Task.CompletedTask);
        }
Пример #16
0
        public async Task GetReplicationActiveConnections()
        {
            using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                await using (var writer = new AsyncBlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var incoming = new DynamicJsonArray();
                    foreach (var item in Database.ReplicationLoader.IncomingConnections)
                    {
                        incoming.Add(new DynamicJsonValue
                        {
                            ["SourceDatabaseId"]   = item.SourceDatabaseId,
                            ["SourceDatabaseName"] = item.SourceDatabaseName,
                            ["SourceMachineName"]  = item.SourceMachineName,
                            ["SourceUrl"]          = item.SourceUrl
                        });
                    }

                    var outgoing = new DynamicJsonArray();
                    foreach (var item in Database.ReplicationLoader.OutgoingConnections)
                    {
                        outgoing.Add(new DynamicJsonValue
                        {
                            ["Url"]      = item.Url,
                            ["Database"] = item.Database,
                            ["Disabled"] = item.Disabled
                        });
                    }

                    context.Write(writer, new DynamicJsonValue
                    {
                        ["IncomingConnections"] = incoming,
                        ["OutgoingConnections"] = outgoing
                    });
                }
        }
        public Task GetReplicationReconnectionQueue()
        {
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var data = new DynamicJsonArray();
                    foreach (var queueItem in Database.DocumentReplicationLoader.ReconnectQueue)
                    {
                        data.Add(new DynamicJsonValue
                        {
                            ["Url"]                  = queueItem.Url,
                            ["Database"]             = queueItem.Database,
                            ["Disabled"]             = queueItem.Disabled,
                            ["IgnoredClient"]        = queueItem.IgnoredClient,
                            ["SkipIndexReplication"] = queueItem.SkipIndexReplication,
                            ["SpecifiedCollections"] = queueItem.SpecifiedCollections
                        });
                    }

                    context.Write(writer, data);
                }
            return(Task.CompletedTask);
        }
Пример #18
0
        public DynamicJsonValue ToJson()
        {
            var res = new DynamicJsonValue
            {
                [nameof(Port)]        = Port,
                [nameof(Url)]         = Url,
                [nameof(Certificate)] = Certificate,
                [nameof(NodeTag)]     = NodeTag,
                [nameof(ServerId)]    = ServerId
            };

            if (Urls == null)
            {
                return(res);
            }

            var array = new DynamicJsonArray();

            foreach (var url in Urls)
            {
                array.Add(url);
            }

            res[nameof(Urls)] = array;

            return(res);
        }
        public Task GetReplicationConflictsById()
        {
            var docId = GetQueryStringValueAndAssertIfSingleAndNotEmpty("docId");
            DocumentsOperationContext context;

            using (ContextPool.AllocateOperationContext(out context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                    using (context.OpenReadTransaction())
                    {
                        var conflicts = context.DocumentDatabase.DocumentsStorage.GetConflictsFor(context, docId);
                        var array     = new DynamicJsonArray();
                        foreach (var conflict in conflicts)
                        {
                            array.Add(new DynamicJsonValue
                            {
                                ["Key"]          = conflict.Key,
                                ["ChangeVector"] = conflict.ChangeVector.ToJson(),
                                ["Doc"]          = conflict.Doc
                            });
                        }

                        context.Write(writer, array);

                        HttpContext.Response.StatusCode = 200;
                        return(Task.CompletedTask);
                    }
        }
Пример #20
0
        public Task GetReplicationIncomingRejectionInfo()
        {
            using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context))
                using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream()))
                {
                    var stats = new DynamicJsonArray();
                    foreach (var statItem in Database.ReplicationLoader.IncomingRejectionStats)
                    {
                        stats.Add(new DynamicJsonValue
                        {
                            ["Key"] = new DynamicJsonValue
                            {
                                ["SourceDatabaseId"]   = statItem.Key.SourceDatabaseId,
                                ["SourceDatabaseName"] = statItem.Key.SourceDatabaseName,
                                ["SourceMachineName"]  = statItem.Key.SourceMachineName,
                                ["SourceUrl"]          = statItem.Key.SourceUrl
                            },
                            ["Value"] = new DynamicJsonArray(statItem.Value.Select(x => new DynamicJsonValue
                            {
                                ["Reason"] = x.Reason,
                                ["When"]   = x.When
                            }))
                        });
                    }

                    context.Write(writer, new DynamicJsonValue
                    {
                        ["Stats"] = stats
                    });
                }

            return(Task.CompletedTask);
        }
Пример #21
0
        public static BlittableJsonReaderObject WriteDummyDocumentForAttachment(DocumentsOperationContext context, LegacyAttachmentDetails details)
        {
            var attachment = new DynamicJsonValue
            {
                ["Name"]        = details.Key,
                ["Hash"]        = details.Hash,
                ["ContentType"] = string.Empty,
                ["Size"]        = details.Size,
            };
            var attachments = new DynamicJsonArray();

            attachments.Add(attachment);
            var metadata = new DynamicJsonValue
            {
                [Constants.Documents.Metadata.Collection]  = "@files",
                [Constants.Documents.Metadata.Attachments] = attachments,
                [Constants.Documents.Metadata.LegacyAttachmentsMetadata] = details.Metadata
            };
            var djv = new DynamicJsonValue
            {
                [Constants.Documents.Metadata.Key] = metadata,
            };

            return(context.ReadObject(djv, details.Id));
        }
Пример #22
0
        protected override IDataProvider <EmbeddedArrayValue> CreateArrayEmbedDataProvider(ReferenceInformation refInfo, DbConnection connection)
        {
            var queryParameters = string.Join(" and ", refInfo.ForeignKeyColumns.Select((column, idx) => $"\"{QuoteColumn(column)}\" = :p{idx}"));

            var query = $"select * from \"{QuoteTable(refInfo.SourceSchema, refInfo.SourceTableName)}\" where {queryParameters}";

            return(new SqlStatementProvider <EmbeddedArrayValue>(connection, query, specialColumns => GetColumns(specialColumns, refInfo.SourcePrimaryKeyColumns), reader =>
            {
                var objectProperties = new DynamicJsonArray();
                var specialProperties = new List <DynamicJsonValue>();
                var attachments = new List <Dictionary <string, byte[]> >();
                while (reader.Read())
                {
                    objectProperties.Add(ExtractFromReader(reader, refInfo.TargetDocumentColumns));
                    attachments.Add(ExtractAttachments(reader, refInfo.TargetAttachmentColumns));

                    if (refInfo.ChildReferences != null)
                    {
                        // fill only when used
                        specialProperties.Add(ExtractFromReader(reader, refInfo.TargetSpecialColumnsNames));
                    }
                }

                return new EmbeddedArrayValue
                {
                    ArrayOfNestedObjects = objectProperties,
                    SpecialColumnsValues = specialProperties,
                    Attachments = attachments
                };
            }));
        }
Пример #23
0
        private DynamicJsonArray GetProcessThreadCollection(Process proc)
        {
            var dja        = new DynamicJsonArray();
            var collection = proc.Threads;

            for (var idx = 0; idx < collection.Count; idx++)
            {
                var i   = idx;
                var djv = new DynamicJsonValue();

                AddValue(djv, "Id", () => collection[i].Id);
                AddValue(djv, "BasePriority", () => collection[i].BasePriority);
                AddValue(djv, "CurrentPriority", () => collection[i].CurrentPriority);
                AddValue(djv, "PriorityBoostEnabled", () => collection[i].PriorityBoostEnabled);
                AddValue(djv, "PriorityLevel", () => collection[i].PriorityLevel);
                AddValue(djv, "StartAddress", () => collection[i].StartAddress.ToInt64());
                AddValue(djv, "ThreadState", () => collection[i].ThreadState);
                AddValue(djv, "WaitReason", () => collection[i].WaitReason);
                AddValue(djv, "PrivilegedProcessorTime", () => collection[i].PrivilegedProcessorTime);
                AddValue(djv, "StartTime", () => collection[i].StartTime);
                AddValue(djv, "TotalProcessorTime", () => collection[i].TotalProcessorTime);
                AddValue(djv, "UserProcessorTime", () => collection[i].UserProcessorTime);
                AddValue(djv, "Site", () => collection[i].Site);
                AddValue(djv, "Container", () => collection[i].Container);

                dja.Add(djv);
            }
            return(dja);
        }
Пример #24
0
        private QueryResult GetUnstableQueryResult(IDocumentStore store, DocumentStoreExtensions.DatabaseCommands commands, string query)
        {
            WaitForIndexing(store);

            var q = commands.Query(new IndexQuery()
            {
                Query    = $"FROM INDEX 'CommentsCountPerBlog' WHERE {query}",
                Start    = 0,
                PageSize = 10
            });

            var array = new DynamicJsonArray();

            foreach (BlittableJsonReaderObject result in q.Results)
            {
                result.Modifications = new DynamicJsonValue(result);
                result.Modifications.Remove("@metadata");

                array.Add(commands.Context.ReadObject(result, "blog"));
            }

            var djv = new DynamicJsonValue
            {
                ["_"] = array
            };

            var json = commands.Context.ReadObject(djv, "blog");

            q.Results = (BlittableJsonReaderArray)json["_"];
            return(q);
        }
Пример #25
0
        public override DynamicJsonValue ToJson()
        {
            DynamicJsonValue json = base.ToJson();

            json[nameof(Nodes)]          = new DynamicJsonArray(Nodes);
            json[nameof(Authentication)] = Authentication == null ? null : new DynamicJsonValue()
            {
                [nameof(Authentication.Basic)] = Authentication.Basic == null ? null : new DynamicJsonValue()
                {
                    [nameof(Authentication.Basic.Username)] = Authentication?.Basic?.Username,
                    [nameof(Authentication.Basic.Password)] = Authentication?.Basic?.Password
                },
                [nameof(Authentication.ApiKey)] = Authentication.ApiKey == null ? null : new DynamicJsonValue()
                {
                    [nameof(Authentication.ApiKey.ApiKeyId)] = Authentication?.ApiKey?.ApiKeyId,
                    [nameof(Authentication.ApiKey.ApiKey)]   = Authentication?.ApiKey?.ApiKey
                },
                [nameof(Authentication.Certificate)] = Authentication.Certificate == null ? null : new DynamicJsonValue()
                {
                    [nameof(Authentication.Certificate.CertificatesBase64)] = new DynamicJsonArray(Authentication?.Certificate?.CertificatesBase64)
                },
            };

            return(json);
        }
Пример #26
0
        public void CanMergeArrays_SameStart()
        {
            using (var ctx = new JsonOperationContext(4096, 16 * 1024, 32 * 1024, SharedMultipleUseFlag.None))
            {
                DynamicJsonValue obj1 = new DynamicJsonValue();
                DynamicJsonValue obj2 = new DynamicJsonValue();
                obj1["Comments"] = new DynamicJsonArray {
                    1, 2, 4
                };
                obj2["Comments"] = new DynamicJsonArray {
                    1, 2, 5
                };

                var conflictResovlerAdvisor = new ConflictResolverAdvisor(
                    new List <BlittableJsonReaderObject> {
                    ctx.ReadObject(obj1, "doc/1"), ctx.ReadObject(obj2, "doc/1")
                },
                    ctx);
                var resolvled = conflictResovlerAdvisor.Resolve().Document;

                BlittableJsonReaderArray comments;
                resolvled.TryGet("Comments", out comments);
                Assert.Equal(">>>> auto merged array start", comments[0].ToString());
                Assert.Equal((long)1, comments[1]);
                Assert.Equal((long)2, comments[2]);
                Assert.Equal((long)4, comments[3]);
                Assert.Equal((long)5, comments[4]);
                Assert.Equal("<<<< auto merged array end", comments[5].ToString());
            }
        }
Пример #27
0
            public static DynamicJsonArray ToJson()
            {
                var array = new DynamicJsonArray();

                foreach (var field in typeof(Server).GetFields())
                {
                    var fieldValue = GetFieldValue(field);
                    var fullOid    = field.Name == nameof(UpTimeGlobal) ? fieldValue.Oid : Root + fieldValue.Oid;

                    if (fieldValue.Type == null)
                    {
                        array.Add(CreateJsonItem(fullOid, fieldValue.Description));
                        continue;
                    }

                    var enumUnderlyingType = Enum.GetUnderlyingType(fieldValue.Type);
                    foreach (var value in fieldValue.Type.GetEnumValues())
                    {
                        var enumUnderlyingValue = Convert.ChangeType(value, enumUnderlyingType);

                        var finalOid         = fullOid.Replace("{0}", enumUnderlyingValue.ToString());
                        var finalDescription = fieldValue.Description.Replace("{0}", $"{fieldValue.Type.Name}.{value}");

                        array.Add(CreateJsonItem(finalOid, finalDescription));
                    }
                }

                return(array);
            }
Пример #28
0
        public DynamicJsonValue ToJson()
        {
            var djv = new DynamicJsonValue();

            foreach (var key in Actions.Keys)
            {
                var queue = Actions[key];
                if (queue == null)
                {
                    continue;
                }

                var list = new DynamicJsonArray();
                foreach (var details in queue)
                {
                    list.Add(new DynamicJsonValue
                    {
                        [nameof(ActionDetails.NumberOfResults)] = details.NumberOfResults,
                        [nameof(ActionDetails.PageSize)]        = details.PageSize,
                        [nameof(ActionDetails.Occurrence)]      = details.Occurrence,
                        [nameof(ActionDetails.Duration)]        = details.Duration,
                        [nameof(ActionDetails.Details)]         = details.Details
                    });
                }

                djv[key] = list;
            }

            return(new DynamicJsonValue(GetType())
            {
                [nameof(Actions)] = djv
            });
        }
Пример #29
0
        public void Add(SmapsReaderResults results)
        {
            var djv = new DynamicJsonValue
            {
                ["File"]              = results.ResultString,
                ["Size"]              = Sizes.Humane(results.Size),
                ["Rss"]               = Sizes.Humane(results.Rss),
                ["SharedClean"]       = Sizes.Humane(results.SharedClean),
                ["SharedDirty"]       = Sizes.Humane(results.SharedDirty),
                ["PrivateClean"]      = Sizes.Humane(results.PrivateClean),
                ["PrivateDirty"]      = Sizes.Humane(results.PrivateDirty),
                ["TotalClean"]        = results.SharedClean + results.PrivateClean,
                ["TotalCleanHumanly"] = Sizes.Humane(results.SharedClean + results.PrivateClean),
                ["TotalDirty"]        = results.SharedDirty + results.PrivateDirty,
                ["TotalDirtyHumanly"] = Sizes.Humane(results.SharedDirty + results.PrivateDirty),
                ["TotalSwap"]         = results.Swap,
                ["TotalSwapHumanly"]  = Sizes.Humane(results.Swap)
            };

            if (_dja == null)
            {
                _dja = new DynamicJsonArray();
            }
            _dja.Add(djv);
        }
Пример #30
0
                public static DynamicJsonValue ToJson(ServerStore serverStore, TransactionOperationContext context, RawDatabaseRecord record, long databaseIndex)
                {
                    var mapping = SnmpDatabase.GetIndexMapping(context, serverStore, record.DatabaseName);

                    var djv = new DynamicJsonValue();

                    if (mapping.Count == 0)
                    {
                        return(djv);
                    }

                    foreach (var indexName in record.Indexes.Keys)
                    {
                        if (mapping.TryGetValue(indexName, out var index) == false)
                        {
                            continue;
                        }

                        var array = new DynamicJsonArray();
                        foreach (var field in typeof(Indexes).GetFields())
                        {
                            var fieldValue  = GetFieldValue(field);
                            var databaseOid = string.Format(fieldValue.Oid, databaseIndex);
                            var indexOid    = string.Format(databaseOid, index);
                            array.Add(CreateJsonItem(Root + indexOid, fieldValue.Description));
                        }

                        djv[indexName] = array;
                    }

                    return(djv);
                }
Пример #31
0
 public static dynamic GetValue(dynamic item)
 {
     if (item is IDictionary<string, dynamic>)
     {
         item = new DynamicJsonObject(item as IDictionary<string, dynamic>);
     }
     else if (item is ArrayList && (item as ArrayList).Count > 0 && (item as ArrayList)[0] is IDictionary<string, dynamic>)
     {
         item = new DynamicJsonArray(item);
     }
     else if (item is ArrayList)
     {
         item = new List<dynamic>((item as ArrayList).ToArray());
     }
     return item;
 }