diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 991d852..dd3f5f0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,6 +43,7 @@ After modifying registry schema ([registry.schema.json]), the [registry_gen.go] ```bash curl -s -o docs/registry.schema.json https://raw.githubusercontent.com/grafana/k6-extension-registry/main/registry.schema.json go-jsonschema --capitalization URL --capitalization JavaScript --capitalization OSS -p k6registry --only-models -o registry_gen.go docs/registry.schema.json +bash metrics_gen.sh ``` [registry.schema.json]: docs/registry.schema.json diff --git a/README.md b/README.md index d9ec81a..07c25c5 100644 --- a/README.md +++ b/README.md @@ -70,8 +70,8 @@ Registry generated from the source above. "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -89,8 +89,8 @@ Registry generated from the source above. "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -141,8 +141,11 @@ Registry generated from the source above. "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -155,14 +158,14 @@ Registry generated from the source above. ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -172,6 +175,7 @@ Registry generated from the source above. }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -188,7 +192,12 @@ Registry generated from the source above. ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -206,8 +215,8 @@ Registry generated from the source above. "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -219,6 +228,8 @@ Registry generated from the source above. }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -246,8 +257,11 @@ Registry generated from the source above. "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -265,8 +279,8 @@ Registry generated from the source above. "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -289,8 +303,12 @@ Registry generated from the source above. "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -354,6 +372,7 @@ Registry generated from the source above. }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -533,6 +552,8 @@ By using the `--api` flag, files are created with relative paths in a base direc ```ascii file=docs/example-api.txt docs/example-api ├── catalog.json +├── metrics.json +├── metrics.txt ├── registry.json ├── category │   ├── authentication.json @@ -563,21 +584,26 @@ docs/example-api │   │   └── grafana │   │   ├── xk6-dashboard │   │   │   ├── badge.svg -│   │   │   └── extension.json +│   │   │   ├── extension.json +│   │   │   └── grade.svg │   │   ├── xk6-disruptor │   │   │   ├── badge.svg -│   │   │   └── extension.json +│   │   │   ├── extension.json +│   │   │   └── grade.svg │   │   ├── xk6-faker │   │   │   ├── badge.svg -│   │   │   └── extension.json +│   │   │   ├── extension.json +│   │   │   └── grade.svg │   │   └── xk6-sql │   │   ├── badge.svg -│   │   └── extension.json +│   │   ├── extension.json +│   │   └── grade.svg │   ├── gitlab.com │   │   └── szkiba │   │   └── xk6-banner │   │   ├── badge.svg -│   │   └── extension.json +│   │   ├── extension.json +│   │   └── grade.svg │   └── go.k6.io │   └── k6 │   └── extension.json @@ -591,10 +617,16 @@ docs/example-api └── tier ├── community-catalog.json ├── community.json + ├── community-metrics.json + ├── community-metrics.txt ├── official-catalog.json ├── official.json + ├── official-metrics.json + ├── official-metrics.txt ├── partner-catalog.json ├── partner.json + ├── partner-metrics.json + ├── partner-metrics.txt └── at-least ├── community-catalog.json ├── community.json diff --git a/cmd/api.go b/cmd/api.go index e4bd3c0..efc8083 100644 --- a/cmd/api.go +++ b/cmd/api.go @@ -66,7 +66,50 @@ func writeAPIGroupGlobal(registry k6registry.Registry, target string) error { return err } - return writeJSON(filepath.Join(target, "metrics.json"), k6registry.CalculateMetrics(registry)) + if err := writeMetrics(registry, target, "", func(_ k6registry.Extension) bool { return true }); err != nil { + return err + } + + for _, tier := range k6registry.Tiers { + err := writeMetrics(registry, filepath.Join(target, "tier"), string(tier)+"-", + func(ext k6registry.Extension) bool { + return ext.Tier == tier + }) + if err != nil { + return err + } + } + + return nil +} + +func writeMetrics( + registry k6registry.Registry, + target string, + prefix string, + cond func(k6registry.Extension) bool, +) error { + metrics := k6registry.CalculateMetricsCond(registry, cond) + + basename := "metrics" + + if len(prefix) > 0 { + basename = prefix + basename + } + + basename = filepath.Join(target, basename) + + err := writeJSON(basename+".json", metrics) + if err != nil { + return err + } + + data, err := metrics.MarshalPrometheus() + if err != nil { + return err + } + + return os.WriteFile(basename+".txt", data, permFile) //nolint:forbidigo } const gradesvg = `%s%s` //nolint:lll diff --git a/docs/example-api.txt b/docs/example-api.txt index 1242c19..c352c4e 100644 --- a/docs/example-api.txt +++ b/docs/example-api.txt @@ -1,5 +1,7 @@ docs/example-api ├── catalog.json +├── metrics.json +├── metrics.txt ├── registry.json ├── category │   ├── authentication.json @@ -30,21 +32,26 @@ docs/example-api │   │   └── grafana │   │   ├── xk6-dashboard │   │   │   ├── badge.svg -│   │   │   └── extension.json +│   │   │   ├── extension.json +│   │   │   └── grade.svg │   │   ├── xk6-disruptor │   │   │   ├── badge.svg -│   │   │   └── extension.json +│   │   │   ├── extension.json +│   │   │   └── grade.svg │   │   ├── xk6-faker │   │   │   ├── badge.svg -│   │   │   └── extension.json +│   │   │   ├── extension.json +│   │   │   └── grade.svg │   │   └── xk6-sql │   │   ├── badge.svg -│   │   └── extension.json +│   │   ├── extension.json +│   │   └── grade.svg │   ├── gitlab.com │   │   └── szkiba │   │   └── xk6-banner │   │   ├── badge.svg -│   │   └── extension.json +│   │   ├── extension.json +│   │   └── grade.svg │   └── go.k6.io │   └── k6 │   └── extension.json @@ -58,10 +65,16 @@ docs/example-api └── tier ├── community-catalog.json ├── community.json + ├── community-metrics.json + ├── community-metrics.txt ├── official-catalog.json ├── official.json + ├── official-metrics.json + ├── official-metrics.txt ├── partner-catalog.json ├── partner.json + ├── partner-metrics.json + ├── partner-metrics.txt └── at-least ├── community-catalog.json ├── community.json diff --git a/docs/example-api/catalog.json b/docs/example-api/catalog.json index c612ee6..4b24aae 100644 --- a/docs/example-api/catalog.json +++ b/docs/example-api/catalog.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -106,6 +106,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -204,8 +205,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -240,7 +245,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -258,8 +268,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -271,6 +281,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -298,8 +310,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -317,8 +332,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -341,8 +356,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -355,14 +373,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -372,6 +390,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/category/data.json b/docs/example-api/category/data.json index f70f67f..662a08c 100644 --- a/docs/example-api/category/data.json +++ b/docs/example-api/category/data.json @@ -4,8 +4,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -18,14 +21,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -35,6 +38,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -50,8 +54,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -69,8 +76,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], diff --git a/docs/example-api/category/kubernetes.json b/docs/example-api/category/kubernetes.json index b748497..32bc133 100644 --- a/docs/example-api/category/kubernetes.json +++ b/docs/example-api/category/kubernetes.json @@ -5,7 +5,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -23,8 +28,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -36,6 +41,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", diff --git a/docs/example-api/category/misc.json b/docs/example-api/category/misc.json index dbc8d12..3040901 100644 --- a/docs/example-api/category/misc.json +++ b/docs/example-api/category/misc.json @@ -4,8 +4,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -69,6 +73,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/category/observability.json b/docs/example-api/category/observability.json index 4a05d71..e877cbf 100644 --- a/docs/example-api/category/observability.json +++ b/docs/example-api/category/observability.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", diff --git a/docs/example-api/category/reporting.json b/docs/example-api/category/reporting.json index 4a05d71..e877cbf 100644 --- a/docs/example-api/category/reporting.json +++ b/docs/example-api/category/reporting.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", diff --git a/docs/example-api/grade/A.json b/docs/example-api/grade/A.json index ea1ec07..e877cbf 100644 --- a/docs/example-api/grade/A.json +++ b/docs/example-api/grade/A.json @@ -1,125 +1,73 @@ [ { "categories": [ - "data" + "reporting", + "observability" ], "compliance": { "grade": "A", "level": 100 }, - "description": "Load test SQL Servers", - "imports": [ - "k6/x/sql" + "description": "Web-based metrics dashboard for k6", + "module": "github.com/grafana/xk6-dashboard", + "outputs": [ + "dashboard" ], - "module": "github.com/grafana/xk6-sql", "products": [ - "cloud", "oss" ], "repo": { - "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", - "license": "Apache-2.0", - "name": "xk6-sql", - "owner": "grafana", - "public": true, - "stars": 110, - "timestamp": 1725979901, - "topics": [ - "k6", - "sql", - "xk6" - ], - "url": "https://github.com/grafana/xk6-sql" - }, - "tier": "official", - "versions": [ - "v0.4.1", - "v0.4.0", - "v0.3.0", - "v0.2.1", - "v0.2.0", - "v0.1.1", - "v0.1.0", - "v0.0.1" - ] - }, - { - "categories": [ - "data" - ], - "compliance": { - "grade": "A", - "level": 100 - }, - "description": "Generate random fake data", - "imports": [ - "k6/x/faker" - ], - "module": "github.com/grafana/xk6-faker", - "products": [ - "oss" - ], - "repo": { - "clone_url": "https://github.com/grafana/xk6-faker.git", - "description": "Random fake data generator for k6.", - "homepage": "https://faker.x.k6.io", + "clone_url": "https://github.com/grafana/xk6-dashboard.git", + "description": "A k6 extension that makes k6 metrics available on a web-based dashboard.", + "homepage": "https://github.com/grafana/xk6-dashboard", "license": "AGPL-3.0", - "name": "xk6-faker", + "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 367, + "timestamp": 1731922735, "topics": [ - "xk6" + "xk6", + "xk6-official", + "xk6-output-dashboard" ], - "url": "https://github.com/grafana/xk6-faker" + "url": "https://github.com/grafana/xk6-dashboard" }, "tier": "official", "versions": [ + "v0.7.5", + "v0.7.4", + "v0.7.3", + "v0.7.3-alpha.1", + "v0.7.2", + "v0.7.1", + "v0.7.0", + "v0.7.0-apha.3", + "v0.7.0-alpha.5", + "v0.7.0-alpha.4", + "v0.7.0-alpha.3", + "v0.7.0-alpha.2", + "v0.7.0-alpha.1", + "v0.6.1", + "v0.6.0", + "v0.5.5", + "v0.5.4", + "v0.5.3", + "v0.5.2", + "v0.5.1", + "v0.5.0", + "v0.4.4", + "v0.4.3", + "v0.4.2", + "v0.4.1", "v0.4.0", + "v0.3.2", "v0.3.1", "v0.3.0", - "v0.3.0-alpha.1", - "v0.2.2", - "v0.2.1", "v0.2.0", - "v0.1.0" - ] - }, - { - "categories": [ - "misc" - ], - "compliance": { - "grade": "A", - "level": 100 - }, - "description": "Print ASCII art banner from k6 test", - "imports": [ - "k6/x/banner" - ], - "module": "gitlab.com/szkiba/xk6-banner", - "products": [ - "oss" - ], - "repo": { - "clone_url": "https://gitlab.com/szkiba/xk6-banner.git", - "description": "Print ASCII art banner from k6 test.", - "homepage": "https://gitlab.com/szkiba/xk6-banner", - "license": "MIT", - "name": "xk6-banner", - "owner": "szkiba", - "public": true, - "timestamp": 1725896396, - "topics": [ - "xk6" - ], - "url": "https://gitlab.com/szkiba/xk6-banner" - }, - "tier": "community", - "versions": [ + "v0.1.3", + "v0.1.2", + "v0.1.1", "v0.1.0" ] } diff --git a/docs/example-api/grade/B.json b/docs/example-api/grade/B.json index fe51488..662a08c 100644 --- a/docs/example-api/grade/B.json +++ b/docs/example-api/grade/B.json @@ -1 +1,98 @@ -[] +[ + { + "categories": [ + "data" + ], + "compliance": { + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 + }, + "description": "Load test SQL Servers", + "imports": [ + "k6/x/sql" + ], + "module": "github.com/grafana/xk6-sql", + "products": [ + "cloud", + "oss" + ], + "repo": { + "clone_url": "https://github.com/grafana/xk6-sql.git", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", + "license": "Apache-2.0", + "name": "xk6-sql", + "owner": "grafana", + "public": true, + "stars": 120, + "timestamp": 1733736611, + "topics": [ + "k6", + "sql", + "xk6" + ], + "url": "https://github.com/grafana/xk6-sql" + }, + "tier": "official", + "versions": [ + "v1.0.0", + "v0.4.1", + "v0.4.0", + "v0.3.0", + "v0.2.1", + "v0.2.0", + "v0.1.1", + "v0.1.0", + "v0.0.1" + ] + }, + { + "categories": [ + "data" + ], + "compliance": { + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 + }, + "description": "Generate random fake data", + "imports": [ + "k6/x/faker" + ], + "module": "github.com/grafana/xk6-faker", + "products": [ + "oss" + ], + "repo": { + "clone_url": "https://github.com/grafana/xk6-faker.git", + "description": "Random fake data generator for k6.", + "homepage": "https://faker.x.k6.io", + "license": "AGPL-3.0", + "name": "xk6-faker", + "owner": "grafana", + "public": true, + "stars": 63, + "timestamp": 1733730893, + "topics": [ + "xk6" + ], + "url": "https://github.com/grafana/xk6-faker" + }, + "tier": "official", + "versions": [ + "v0.4.0", + "v0.3.1", + "v0.3.0", + "v0.3.0-alpha.1", + "v0.2.2", + "v0.2.1", + "v0.2.0", + "v0.1.0" + ] + } +] diff --git a/docs/example-api/grade/C.json b/docs/example-api/grade/C.json index d3009a1..44b3b69 100644 --- a/docs/example-api/grade/C.json +++ b/docs/example-api/grade/C.json @@ -1,83 +1,16 @@ [ - { - "categories": [ - "reporting", - "observability" - ], - "compliance": { - "grade": "C", - "level": 80 - }, - "description": "Web-based metrics dashboard for k6", - "module": "github.com/grafana/xk6-dashboard", - "outputs": [ - "dashboard" - ], - "products": [ - "oss" - ], - "repo": { - "clone_url": "https://github.com/grafana/xk6-dashboard.git", - "description": "A k6 extension that makes k6 metrics available on a web-based dashboard.", - "homepage": "https://github.com/grafana/xk6-dashboard", - "license": "AGPL-3.0", - "name": "xk6-dashboard", - "owner": "grafana", - "public": true, - "stars": 343, - "timestamp": 1719907965, - "topics": [ - "xk6", - "xk6-official", - "xk6-output-dashboard" - ], - "url": "https://github.com/grafana/xk6-dashboard" - }, - "tier": "official", - "versions": [ - "v0.7.5", - "v0.7.4", - "v0.7.3", - "v0.7.3-alpha.1", - "v0.7.2", - "v0.7.1", - "v0.7.0", - "v0.7.0-apha.3", - "v0.7.0-alpha.5", - "v0.7.0-alpha.4", - "v0.7.0-alpha.3", - "v0.7.0-alpha.2", - "v0.7.0-alpha.1", - "v0.6.1", - "v0.6.0", - "v0.5.5", - "v0.5.4", - "v0.5.3", - "v0.5.2", - "v0.5.1", - "v0.5.0", - "v0.4.4", - "v0.4.3", - "v0.4.2", - "v0.4.1", - "v0.4.0", - "v0.3.2", - "v0.3.1", - "v0.3.0", - "v0.2.0", - "v0.1.3", - "v0.1.2", - "v0.1.1", - "v0.1.0" - ] - }, { "categories": [ "kubernetes" ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -95,8 +28,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -108,6 +41,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -129,5 +64,44 @@ "v0.1.1", "v0.1.0" ] + }, + { + "categories": [ + "misc" + ], + "compliance": { + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 + }, + "description": "Print ASCII art banner from k6 test", + "imports": [ + "k6/x/banner" + ], + "module": "gitlab.com/szkiba/xk6-banner", + "products": [ + "oss" + ], + "repo": { + "clone_url": "https://gitlab.com/szkiba/xk6-banner.git", + "description": "Print ASCII art banner from k6 test.", + "homepage": "https://gitlab.com/szkiba/xk6-banner", + "license": "MIT", + "name": "xk6-banner", + "owner": "szkiba", + "public": true, + "timestamp": 1725896396, + "topics": [ + "xk6" + ], + "url": "https://gitlab.com/szkiba/xk6-banner" + }, + "tier": "community", + "versions": [ + "v0.1.0" + ] } ] diff --git a/docs/example-api/grade/at-least/A.json b/docs/example-api/grade/at-least/A.json index ea1ec07..e877cbf 100644 --- a/docs/example-api/grade/at-least/A.json +++ b/docs/example-api/grade/at-least/A.json @@ -1,125 +1,73 @@ [ { "categories": [ - "data" + "reporting", + "observability" ], "compliance": { "grade": "A", "level": 100 }, - "description": "Load test SQL Servers", - "imports": [ - "k6/x/sql" + "description": "Web-based metrics dashboard for k6", + "module": "github.com/grafana/xk6-dashboard", + "outputs": [ + "dashboard" ], - "module": "github.com/grafana/xk6-sql", "products": [ - "cloud", "oss" ], "repo": { - "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", - "license": "Apache-2.0", - "name": "xk6-sql", - "owner": "grafana", - "public": true, - "stars": 110, - "timestamp": 1725979901, - "topics": [ - "k6", - "sql", - "xk6" - ], - "url": "https://github.com/grafana/xk6-sql" - }, - "tier": "official", - "versions": [ - "v0.4.1", - "v0.4.0", - "v0.3.0", - "v0.2.1", - "v0.2.0", - "v0.1.1", - "v0.1.0", - "v0.0.1" - ] - }, - { - "categories": [ - "data" - ], - "compliance": { - "grade": "A", - "level": 100 - }, - "description": "Generate random fake data", - "imports": [ - "k6/x/faker" - ], - "module": "github.com/grafana/xk6-faker", - "products": [ - "oss" - ], - "repo": { - "clone_url": "https://github.com/grafana/xk6-faker.git", - "description": "Random fake data generator for k6.", - "homepage": "https://faker.x.k6.io", + "clone_url": "https://github.com/grafana/xk6-dashboard.git", + "description": "A k6 extension that makes k6 metrics available on a web-based dashboard.", + "homepage": "https://github.com/grafana/xk6-dashboard", "license": "AGPL-3.0", - "name": "xk6-faker", + "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 367, + "timestamp": 1731922735, "topics": [ - "xk6" + "xk6", + "xk6-official", + "xk6-output-dashboard" ], - "url": "https://github.com/grafana/xk6-faker" + "url": "https://github.com/grafana/xk6-dashboard" }, "tier": "official", "versions": [ + "v0.7.5", + "v0.7.4", + "v0.7.3", + "v0.7.3-alpha.1", + "v0.7.2", + "v0.7.1", + "v0.7.0", + "v0.7.0-apha.3", + "v0.7.0-alpha.5", + "v0.7.0-alpha.4", + "v0.7.0-alpha.3", + "v0.7.0-alpha.2", + "v0.7.0-alpha.1", + "v0.6.1", + "v0.6.0", + "v0.5.5", + "v0.5.4", + "v0.5.3", + "v0.5.2", + "v0.5.1", + "v0.5.0", + "v0.4.4", + "v0.4.3", + "v0.4.2", + "v0.4.1", "v0.4.0", + "v0.3.2", "v0.3.1", "v0.3.0", - "v0.3.0-alpha.1", - "v0.2.2", - "v0.2.1", "v0.2.0", - "v0.1.0" - ] - }, - { - "categories": [ - "misc" - ], - "compliance": { - "grade": "A", - "level": 100 - }, - "description": "Print ASCII art banner from k6 test", - "imports": [ - "k6/x/banner" - ], - "module": "gitlab.com/szkiba/xk6-banner", - "products": [ - "oss" - ], - "repo": { - "clone_url": "https://gitlab.com/szkiba/xk6-banner.git", - "description": "Print ASCII art banner from k6 test.", - "homepage": "https://gitlab.com/szkiba/xk6-banner", - "license": "MIT", - "name": "xk6-banner", - "owner": "szkiba", - "public": true, - "timestamp": 1725896396, - "topics": [ - "xk6" - ], - "url": "https://gitlab.com/szkiba/xk6-banner" - }, - "tier": "community", - "versions": [ + "v0.1.3", + "v0.1.2", + "v0.1.1", "v0.1.0" ] } diff --git a/docs/example-api/grade/at-least/B.json b/docs/example-api/grade/at-least/B.json index ea1ec07..44b21b4 100644 --- a/docs/example-api/grade/at-least/B.json +++ b/docs/example-api/grade/at-least/B.json @@ -1,12 +1,87 @@ [ { "categories": [ - "data" + "reporting", + "observability" ], "compliance": { "grade": "A", "level": 100 }, + "description": "Web-based metrics dashboard for k6", + "module": "github.com/grafana/xk6-dashboard", + "outputs": [ + "dashboard" + ], + "products": [ + "oss" + ], + "repo": { + "clone_url": "https://github.com/grafana/xk6-dashboard.git", + "description": "A k6 extension that makes k6 metrics available on a web-based dashboard.", + "homepage": "https://github.com/grafana/xk6-dashboard", + "license": "AGPL-3.0", + "name": "xk6-dashboard", + "owner": "grafana", + "public": true, + "stars": 367, + "timestamp": 1731922735, + "topics": [ + "xk6", + "xk6-official", + "xk6-output-dashboard" + ], + "url": "https://github.com/grafana/xk6-dashboard" + }, + "tier": "official", + "versions": [ + "v0.7.5", + "v0.7.4", + "v0.7.3", + "v0.7.3-alpha.1", + "v0.7.2", + "v0.7.1", + "v0.7.0", + "v0.7.0-apha.3", + "v0.7.0-alpha.5", + "v0.7.0-alpha.4", + "v0.7.0-alpha.3", + "v0.7.0-alpha.2", + "v0.7.0-alpha.1", + "v0.6.1", + "v0.6.0", + "v0.5.5", + "v0.5.4", + "v0.5.3", + "v0.5.2", + "v0.5.1", + "v0.5.0", + "v0.4.4", + "v0.4.3", + "v0.4.2", + "v0.4.1", + "v0.4.0", + "v0.3.2", + "v0.3.1", + "v0.3.0", + "v0.2.0", + "v0.1.3", + "v0.1.2", + "v0.1.1", + "v0.1.0" + ] + }, + { + "categories": [ + "data" + ], + "compliance": { + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 + }, "description": "Load test SQL Servers", "imports": [ "k6/x/sql" @@ -18,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -35,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -50,8 +126,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -69,8 +148,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -87,40 +166,5 @@ "v0.2.0", "v0.1.0" ] - }, - { - "categories": [ - "misc" - ], - "compliance": { - "grade": "A", - "level": 100 - }, - "description": "Print ASCII art banner from k6 test", - "imports": [ - "k6/x/banner" - ], - "module": "gitlab.com/szkiba/xk6-banner", - "products": [ - "oss" - ], - "repo": { - "clone_url": "https://gitlab.com/szkiba/xk6-banner.git", - "description": "Print ASCII art banner from k6 test.", - "homepage": "https://gitlab.com/szkiba/xk6-banner", - "license": "MIT", - "name": "xk6-banner", - "owner": "szkiba", - "public": true, - "timestamp": 1725896396, - "topics": [ - "xk6" - ], - "url": "https://gitlab.com/szkiba/xk6-banner" - }, - "tier": "community", - "versions": [ - "v0.1.0" - ] } ] diff --git a/docs/example-api/grade/at-least/C.json b/docs/example-api/grade/at-least/C.json index 2a3aea1..c08edb7 100644 --- a/docs/example-api/grade/at-least/C.json +++ b/docs/example-api/grade/at-least/C.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ diff --git a/docs/example-api/grade/at-least/D.json b/docs/example-api/grade/at-least/D.json index 2a3aea1..c08edb7 100644 --- a/docs/example-api/grade/at-least/D.json +++ b/docs/example-api/grade/at-least/D.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ diff --git a/docs/example-api/grade/at-least/E.json b/docs/example-api/grade/at-least/E.json index 2a3aea1..c08edb7 100644 --- a/docs/example-api/grade/at-least/E.json +++ b/docs/example-api/grade/at-least/E.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ diff --git a/docs/example-api/grade/at-least/F.json b/docs/example-api/grade/at-least/F.json index 2a3aea1..c08edb7 100644 --- a/docs/example-api/grade/at-least/F.json +++ b/docs/example-api/grade/at-least/F.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ diff --git a/docs/example-api/metrics.json b/docs/example-api/metrics.json new file mode 100644 index 0000000..9542036 --- /dev/null +++ b/docs/example-api/metrics.json @@ -0,0 +1,20 @@ +{ + "registry_category_data_count": 2, + "registry_category_kubernetes_count": 1, + "registry_category_misc_count": 1, + "registry_category_observability_count": 1, + "registry_category_reporting_count": 1, + "registry_extension_count": 5, + "registry_grade_a_count": 1, + "registry_grade_b_count": 2, + "registry_grade_c_count": 2, + "registry_issue_examples_count": 1, + "registry_issue_smoke_count": 4, + "registry_issue_types_count": 2, + "registry_product_cloud_count": 1, + "registry_product_oss_count": 5, + "registry_tier_community_count": 1, + "registry_tier_official_count": 4, + "registry_type_javascript_count": 4, + "registry_type_output_count": 1 +} diff --git a/docs/example-api/metrics.txt b/docs/example-api/metrics.txt new file mode 100644 index 0000000..40cf492 --- /dev/null +++ b/docs/example-api/metrics.txt @@ -0,0 +1,54 @@ +# HELP registry_category_misc_count Number of extensions in the 'misc' category. +# TYPE registry_category_misc_count counter +registry_category_misc_count 1 1733945081492 +# HELP registry_grade_b_count Number of B-grade extensions. +# TYPE registry_grade_b_count counter +registry_grade_b_count 2 1733945081492 +# HELP registry_issue_types_count Number of extensions without API declaration file. +# TYPE registry_issue_types_count counter +registry_issue_types_count 2 1733945081492 +# HELP registry_product_oss_count Number of extensions available in Grafana k6. +# TYPE registry_product_oss_count counter +registry_product_oss_count 5 1733945081492 +# HELP registry_type_output_count Number of Output extension. +# TYPE registry_type_output_count counter +registry_type_output_count 1 1733945081492 +# HELP registry_category_observability_count Number of extensions in the 'observability' category. +# TYPE registry_category_observability_count counter +registry_category_observability_count 1 1733945081492 +# HELP registry_issue_examples_count Number of extensions without examples directory. +# TYPE registry_issue_examples_count counter +registry_issue_examples_count 1 1733945081492 +# HELP registry_issue_smoke_count Number of extensions without smoke test script. +# TYPE registry_issue_smoke_count counter +registry_issue_smoke_count 4 1733945081492 +# HELP registry_product_cloud_count Number of extensions available in Grafana Cloud k6. +# TYPE registry_product_cloud_count counter +registry_product_cloud_count 1 1733945081492 +# HELP registry_tier_official_count Number of extensions in the 'official' tier. +# TYPE registry_tier_official_count counter +registry_tier_official_count 4 1733945081492 +# HELP registry_category_data_count Number of extensions in the 'data' category. +# TYPE registry_category_data_count counter +registry_category_data_count 2 1733945081492 +# HELP registry_extension_count The total number of extensions. +# TYPE registry_extension_count counter +registry_extension_count 5 1733945081492 +# HELP registry_tier_community_count Number of extension in the community' tier. +# TYPE registry_tier_community_count counter +registry_tier_community_count 1 1733945081492 +# HELP registry_category_kubernetes_count Number of extensions in the 'kubernetes' category. +# TYPE registry_category_kubernetes_count counter +registry_category_kubernetes_count 1 1733945081492 +# HELP registry_category_reporting_count Number of extensions in the 'reporting' category. +# TYPE registry_category_reporting_count counter +registry_category_reporting_count 1 1733945081492 +# HELP registry_grade_a_count Number of A-grade extensions. +# TYPE registry_grade_a_count counter +registry_grade_a_count 1 1733945081492 +# HELP registry_grade_c_count Number of C-grade extensions. +# TYPE registry_grade_c_count counter +registry_grade_c_count 2 1733945081492 +# HELP registry_type_javascript_count Number of JavaScript extension. +# TYPE registry_type_javascript_count counter +registry_type_javascript_count 4 1733945081492 diff --git a/docs/example-api/module/github.com/grafana/xk6-dashboard/badge.svg b/docs/example-api/module/github.com/grafana/xk6-dashboard/badge.svg index 8d69d24..f24dfbf 100644 --- a/docs/example-api/module/github.com/grafana/xk6-dashboard/badge.svg +++ b/docs/example-api/module/github.com/grafana/xk6-dashboard/badge.svg @@ -1 +1 @@ -k6 registryk6 registryCC \ No newline at end of file +k6 registryk6 registryAA \ No newline at end of file diff --git a/docs/example-api/module/github.com/grafana/xk6-dashboard/extension.json b/docs/example-api/module/github.com/grafana/xk6-dashboard/extension.json index ce6a97c..c65b115 100644 --- a/docs/example-api/module/github.com/grafana/xk6-dashboard/extension.json +++ b/docs/example-api/module/github.com/grafana/xk6-dashboard/extension.json @@ -4,8 +4,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -23,8 +23,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", diff --git a/docs/example-api/module/github.com/grafana/xk6-dashboard/grade.svg b/docs/example-api/module/github.com/grafana/xk6-dashboard/grade.svg new file mode 100644 index 0000000..bd74973 --- /dev/null +++ b/docs/example-api/module/github.com/grafana/xk6-dashboard/grade.svg @@ -0,0 +1 @@ +AA \ No newline at end of file diff --git a/docs/example-api/module/github.com/grafana/xk6-disruptor/extension.json b/docs/example-api/module/github.com/grafana/xk6-disruptor/extension.json index 479a8e0..9d591c5 100644 --- a/docs/example-api/module/github.com/grafana/xk6-disruptor/extension.json +++ b/docs/example-api/module/github.com/grafana/xk6-disruptor/extension.json @@ -4,7 +4,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -22,8 +27,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -35,6 +40,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", diff --git a/docs/example-api/module/github.com/grafana/xk6-disruptor/grade.svg b/docs/example-api/module/github.com/grafana/xk6-disruptor/grade.svg new file mode 100644 index 0000000..c386b1d --- /dev/null +++ b/docs/example-api/module/github.com/grafana/xk6-disruptor/grade.svg @@ -0,0 +1 @@ +CC \ No newline at end of file diff --git a/docs/example-api/module/github.com/grafana/xk6-faker/badge.svg b/docs/example-api/module/github.com/grafana/xk6-faker/badge.svg index f24dfbf..1670a8a 100644 --- a/docs/example-api/module/github.com/grafana/xk6-faker/badge.svg +++ b/docs/example-api/module/github.com/grafana/xk6-faker/badge.svg @@ -1 +1 @@ -k6 registryk6 registryAA \ No newline at end of file +k6 registryk6 registryBB \ No newline at end of file diff --git a/docs/example-api/module/github.com/grafana/xk6-faker/extension.json b/docs/example-api/module/github.com/grafana/xk6-faker/extension.json index cd666d4..05d88ef 100644 --- a/docs/example-api/module/github.com/grafana/xk6-faker/extension.json +++ b/docs/example-api/module/github.com/grafana/xk6-faker/extension.json @@ -3,8 +3,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -22,8 +25,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], diff --git a/docs/example-api/module/github.com/grafana/xk6-faker/grade.svg b/docs/example-api/module/github.com/grafana/xk6-faker/grade.svg new file mode 100644 index 0000000..a2885f6 --- /dev/null +++ b/docs/example-api/module/github.com/grafana/xk6-faker/grade.svg @@ -0,0 +1 @@ +BB \ No newline at end of file diff --git a/docs/example-api/module/github.com/grafana/xk6-sql/badge.svg b/docs/example-api/module/github.com/grafana/xk6-sql/badge.svg index f24dfbf..1670a8a 100644 --- a/docs/example-api/module/github.com/grafana/xk6-sql/badge.svg +++ b/docs/example-api/module/github.com/grafana/xk6-sql/badge.svg @@ -1 +1 @@ -k6 registryk6 registryAA \ No newline at end of file +k6 registryk6 registryBB \ No newline at end of file diff --git a/docs/example-api/module/github.com/grafana/xk6-sql/extension.json b/docs/example-api/module/github.com/grafana/xk6-sql/extension.json index 8ec7fb4..fae04ff 100644 --- a/docs/example-api/module/github.com/grafana/xk6-sql/extension.json +++ b/docs/example-api/module/github.com/grafana/xk6-sql/extension.json @@ -3,8 +3,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -17,14 +20,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -34,6 +37,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/module/github.com/grafana/xk6-sql/grade.svg b/docs/example-api/module/github.com/grafana/xk6-sql/grade.svg new file mode 100644 index 0000000..a2885f6 --- /dev/null +++ b/docs/example-api/module/github.com/grafana/xk6-sql/grade.svg @@ -0,0 +1 @@ +BB \ No newline at end of file diff --git a/docs/example-api/module/gitlab.com/szkiba/xk6-banner/badge.svg b/docs/example-api/module/gitlab.com/szkiba/xk6-banner/badge.svg index f24dfbf..8d69d24 100644 --- a/docs/example-api/module/gitlab.com/szkiba/xk6-banner/badge.svg +++ b/docs/example-api/module/gitlab.com/szkiba/xk6-banner/badge.svg @@ -1 +1 @@ -k6 registryk6 registryAA \ No newline at end of file +k6 registryk6 registryCC \ No newline at end of file diff --git a/docs/example-api/module/gitlab.com/szkiba/xk6-banner/extension.json b/docs/example-api/module/gitlab.com/szkiba/xk6-banner/extension.json index 1afd3bf..114c8ad 100644 --- a/docs/example-api/module/gitlab.com/szkiba/xk6-banner/extension.json +++ b/docs/example-api/module/gitlab.com/szkiba/xk6-banner/extension.json @@ -3,8 +3,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ diff --git a/docs/example-api/module/gitlab.com/szkiba/xk6-banner/grade.svg b/docs/example-api/module/gitlab.com/szkiba/xk6-banner/grade.svg new file mode 100644 index 0000000..c386b1d --- /dev/null +++ b/docs/example-api/module/gitlab.com/szkiba/xk6-banner/grade.svg @@ -0,0 +1 @@ +CC \ No newline at end of file diff --git a/docs/example-api/module/go.k6.io/k6/extension.json b/docs/example-api/module/go.k6.io/k6/extension.json index 0bb628a..226ded5 100644 --- a/docs/example-api/module/go.k6.io/k6/extension.json +++ b/docs/example-api/module/go.k6.io/k6/extension.json @@ -33,6 +33,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/product/cloud-catalog.json b/docs/example-api/product/cloud-catalog.json index 7709e97..d67d852 100644 --- a/docs/example-api/product/cloud-catalog.json +++ b/docs/example-api/product/cloud-catalog.json @@ -34,6 +34,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -132,8 +133,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -146,14 +150,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -163,6 +167,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/product/cloud.json b/docs/example-api/product/cloud.json index e559047..32e7fc1 100644 --- a/docs/example-api/product/cloud.json +++ b/docs/example-api/product/cloud.json @@ -4,8 +4,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -18,14 +21,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -35,6 +38,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -80,6 +84,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/product/oss-catalog.json b/docs/example-api/product/oss-catalog.json index c612ee6..4b24aae 100644 --- a/docs/example-api/product/oss-catalog.json +++ b/docs/example-api/product/oss-catalog.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -106,6 +106,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -204,8 +205,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -240,7 +245,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -258,8 +268,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -271,6 +281,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -298,8 +310,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -317,8 +332,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -341,8 +356,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -355,14 +373,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -372,6 +390,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/product/oss.json b/docs/example-api/product/oss.json index 1602961..092264f 100644 --- a/docs/example-api/product/oss.json +++ b/docs/example-api/product/oss.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -289,6 +307,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/product/synthetic-catalog.json b/docs/example-api/product/synthetic-catalog.json index 32ca2c5..3e671a9 100644 --- a/docs/example-api/product/synthetic-catalog.json +++ b/docs/example-api/product/synthetic-catalog.json @@ -34,6 +34,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/product/synthetic.json b/docs/example-api/product/synthetic.json index d0d56f9..00acbe1 100644 --- a/docs/example-api/product/synthetic.json +++ b/docs/example-api/product/synthetic.json @@ -34,6 +34,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/registry.json b/docs/example-api/registry.json index 1602961..092264f 100644 --- a/docs/example-api/registry.json +++ b/docs/example-api/registry.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -289,6 +307,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/tier/at-least/community-catalog.json b/docs/example-api/tier/at-least/community-catalog.json index c612ee6..4b24aae 100644 --- a/docs/example-api/tier/at-least/community-catalog.json +++ b/docs/example-api/tier/at-least/community-catalog.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -106,6 +106,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -204,8 +205,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -240,7 +245,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -258,8 +268,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -271,6 +281,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -298,8 +310,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -317,8 +332,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -341,8 +356,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -355,14 +373,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -372,6 +390,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/tier/at-least/community.json b/docs/example-api/tier/at-least/community.json index 1602961..092264f 100644 --- a/docs/example-api/tier/at-least/community.json +++ b/docs/example-api/tier/at-least/community.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -289,6 +307,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/tier/at-least/official-catalog.json b/docs/example-api/tier/at-least/official-catalog.json index b141f73..8127aef 100644 --- a/docs/example-api/tier/at-least/official-catalog.json +++ b/docs/example-api/tier/at-least/official-catalog.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -106,6 +106,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -205,7 +206,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -223,8 +229,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -236,6 +242,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -263,8 +271,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -282,8 +293,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -306,8 +317,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -320,14 +334,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -337,6 +351,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/tier/at-least/official.json b/docs/example-api/tier/at-least/official.json index 7d84464..8e5a354 100644 --- a/docs/example-api/tier/at-least/official.json +++ b/docs/example-api/tier/at-least/official.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -254,6 +268,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/tier/at-least/partner-catalog.json b/docs/example-api/tier/at-least/partner-catalog.json index b141f73..8127aef 100644 --- a/docs/example-api/tier/at-least/partner-catalog.json +++ b/docs/example-api/tier/at-least/partner-catalog.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -106,6 +106,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -205,7 +206,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -223,8 +229,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -236,6 +242,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -263,8 +271,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -282,8 +293,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -306,8 +317,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -320,14 +334,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -337,6 +351,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/tier/at-least/partner.json b/docs/example-api/tier/at-least/partner.json index 7d84464..8e5a354 100644 --- a/docs/example-api/tier/at-least/partner.json +++ b/docs/example-api/tier/at-least/partner.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -254,6 +268,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/tier/community-catalog.json b/docs/example-api/tier/community-catalog.json index 83dfa47..bb24d5d 100644 --- a/docs/example-api/tier/community-catalog.json +++ b/docs/example-api/tier/community-catalog.json @@ -34,6 +34,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -132,8 +133,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ diff --git a/docs/example-api/tier/community-metrics.json b/docs/example-api/tier/community-metrics.json new file mode 100644 index 0000000..aab038d --- /dev/null +++ b/docs/example-api/tier/community-metrics.json @@ -0,0 +1,10 @@ +{ + "registry_category_misc_count": 1, + "registry_extension_count": 1, + "registry_grade_c_count": 1, + "registry_issue_smoke_count": 1, + "registry_issue_types_count": 1, + "registry_product_oss_count": 1, + "registry_tier_community_count": 1, + "registry_type_javascript_count": 1 +} diff --git a/docs/example-api/tier/community-metrics.txt b/docs/example-api/tier/community-metrics.txt new file mode 100644 index 0000000..b038a84 --- /dev/null +++ b/docs/example-api/tier/community-metrics.txt @@ -0,0 +1,24 @@ +# HELP registry_extension_count The total number of extensions. +# TYPE registry_extension_count counter +registry_extension_count 1 1733945081492 +# HELP registry_grade_c_count Number of C-grade extensions. +# TYPE registry_grade_c_count counter +registry_grade_c_count 1 1733945081492 +# HELP registry_issue_smoke_count Number of extensions without smoke test script. +# TYPE registry_issue_smoke_count counter +registry_issue_smoke_count 1 1733945081492 +# HELP registry_issue_types_count Number of extensions without API declaration file. +# TYPE registry_issue_types_count counter +registry_issue_types_count 1 1733945081492 +# HELP registry_product_oss_count Number of extensions available in Grafana k6. +# TYPE registry_product_oss_count counter +registry_product_oss_count 1 1733945081492 +# HELP registry_tier_community_count Number of extension in the community' tier. +# TYPE registry_tier_community_count counter +registry_tier_community_count 1 1733945081492 +# HELP registry_type_javascript_count Number of JavaScript extension. +# TYPE registry_type_javascript_count counter +registry_type_javascript_count 1 1733945081492 +# HELP registry_category_misc_count Number of extensions in the 'misc' category. +# TYPE registry_category_misc_count counter +registry_category_misc_count 1 1733945081492 diff --git a/docs/example-api/tier/community.json b/docs/example-api/tier/community.json index dbc8d12..3040901 100644 --- a/docs/example-api/tier/community.json +++ b/docs/example-api/tier/community.json @@ -4,8 +4,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -69,6 +73,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/tier/official-catalog.json b/docs/example-api/tier/official-catalog.json index b141f73..8127aef 100644 --- a/docs/example-api/tier/official-catalog.json +++ b/docs/example-api/tier/official-catalog.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -106,6 +106,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -205,7 +206,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -223,8 +229,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -236,6 +242,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -263,8 +271,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -282,8 +293,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -306,8 +317,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -320,14 +334,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -337,6 +351,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example-api/tier/official-metrics.json b/docs/example-api/tier/official-metrics.json new file mode 100644 index 0000000..c3cad19 --- /dev/null +++ b/docs/example-api/tier/official-metrics.json @@ -0,0 +1,18 @@ +{ + "registry_category_data_count": 2, + "registry_category_kubernetes_count": 1, + "registry_category_observability_count": 1, + "registry_category_reporting_count": 1, + "registry_extension_count": 4, + "registry_grade_a_count": 1, + "registry_grade_b_count": 2, + "registry_grade_c_count": 1, + "registry_issue_examples_count": 1, + "registry_issue_smoke_count": 3, + "registry_issue_types_count": 1, + "registry_product_cloud_count": 1, + "registry_product_oss_count": 4, + "registry_tier_official_count": 4, + "registry_type_javascript_count": 3, + "registry_type_output_count": 1 +} diff --git a/docs/example-api/tier/official-metrics.txt b/docs/example-api/tier/official-metrics.txt new file mode 100644 index 0000000..46a0aac --- /dev/null +++ b/docs/example-api/tier/official-metrics.txt @@ -0,0 +1,48 @@ +# HELP registry_type_output_count Number of Output extension. +# TYPE registry_type_output_count counter +registry_type_output_count 1 1733945081492 +# HELP registry_category_data_count Number of extensions in the 'data' category. +# TYPE registry_category_data_count counter +registry_category_data_count 2 1733945081492 +# HELP registry_category_kubernetes_count Number of extensions in the 'kubernetes' category. +# TYPE registry_category_kubernetes_count counter +registry_category_kubernetes_count 1 1733945081492 +# HELP registry_extension_count The total number of extensions. +# TYPE registry_extension_count counter +registry_extension_count 4 1733945081492 +# HELP registry_grade_a_count Number of A-grade extensions. +# TYPE registry_grade_a_count counter +registry_grade_a_count 1 1733945081492 +# HELP registry_issue_types_count Number of extensions without API declaration file. +# TYPE registry_issue_types_count counter +registry_issue_types_count 1 1733945081492 +# HELP registry_tier_official_count Number of extensions in the 'official' tier. +# TYPE registry_tier_official_count counter +registry_tier_official_count 4 1733945081492 +# HELP registry_grade_b_count Number of B-grade extensions. +# TYPE registry_grade_b_count counter +registry_grade_b_count 2 1733945081492 +# HELP registry_product_oss_count Number of extensions available in Grafana k6. +# TYPE registry_product_oss_count counter +registry_product_oss_count 4 1733945081492 +# HELP registry_category_observability_count Number of extensions in the 'observability' category. +# TYPE registry_category_observability_count counter +registry_category_observability_count 1 1733945081492 +# HELP registry_grade_c_count Number of C-grade extensions. +# TYPE registry_grade_c_count counter +registry_grade_c_count 1 1733945081492 +# HELP registry_issue_smoke_count Number of extensions without smoke test script. +# TYPE registry_issue_smoke_count counter +registry_issue_smoke_count 3 1733945081492 +# HELP registry_category_reporting_count Number of extensions in the 'reporting' category. +# TYPE registry_category_reporting_count counter +registry_category_reporting_count 1 1733945081492 +# HELP registry_issue_examples_count Number of extensions without examples directory. +# TYPE registry_issue_examples_count counter +registry_issue_examples_count 1 1733945081492 +# HELP registry_product_cloud_count Number of extensions available in Grafana Cloud k6. +# TYPE registry_product_cloud_count counter +registry_product_cloud_count 1 1733945081492 +# HELP registry_type_javascript_count Number of JavaScript extension. +# TYPE registry_type_javascript_count counter +registry_type_javascript_count 3 1733945081492 diff --git a/docs/example-api/tier/official.json b/docs/example-api/tier/official.json index 7d84464..8e5a354 100644 --- a/docs/example-api/tier/official.json +++ b/docs/example-api/tier/official.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -254,6 +268,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/tier/partner-catalog.json b/docs/example-api/tier/partner-catalog.json index 32ca2c5..3e671a9 100644 --- a/docs/example-api/tier/partner-catalog.json +++ b/docs/example-api/tier/partner-catalog.json @@ -34,6 +34,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-api/tier/partner-metrics.json b/docs/example-api/tier/partner-metrics.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/docs/example-api/tier/partner-metrics.json @@ -0,0 +1 @@ +{} diff --git a/docs/example-api/tier/partner-metrics.txt b/docs/example-api/tier/partner-metrics.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/example-api/tier/partner.json b/docs/example-api/tier/partner.json index d0d56f9..00acbe1 100644 --- a/docs/example-api/tier/partner.json +++ b/docs/example-api/tier/partner.json @@ -34,6 +34,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/example-catalog.json b/docs/example-catalog.json index c612ee6..4b24aae 100644 --- a/docs/example-catalog.json +++ b/docs/example-catalog.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -106,6 +106,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", @@ -204,8 +205,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -240,7 +245,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -258,8 +268,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -271,6 +281,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -298,8 +310,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -317,8 +332,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -341,8 +356,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -355,14 +373,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -372,6 +390,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", diff --git a/docs/example.json b/docs/example.json index 1602961..092264f 100644 --- a/docs/example.json +++ b/docs/example.json @@ -5,8 +5,8 @@ "observability" ], "compliance": { - "grade": "C", - "level": 80 + "grade": "A", + "level": 100 }, "description": "Web-based metrics dashboard for k6", "module": "github.com/grafana/xk6-dashboard", @@ -24,8 +24,8 @@ "name": "xk6-dashboard", "owner": "grafana", "public": true, - "stars": 343, - "timestamp": 1719907965, + "stars": 367, + "timestamp": 1731922735, "topics": [ "xk6", "xk6-official", @@ -76,8 +76,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Load test SQL Servers", "imports": [ @@ -90,14 +93,14 @@ ], "repo": { "clone_url": "https://github.com/grafana/xk6-sql.git", - "description": "k6 extension to load test RDBMSs (PostgreSQL, MySQL, MS SQL and SQLite3)", - "homepage": "https://github.com/grafana/xk6-sql", + "description": "Use SQL databases from k6 tests.", + "homepage": "http://sql.x.k6.io", "license": "Apache-2.0", "name": "xk6-sql", "owner": "grafana", "public": true, - "stars": 110, - "timestamp": 1725979901, + "stars": 120, + "timestamp": 1733736611, "topics": [ "k6", "sql", @@ -107,6 +110,7 @@ }, "tier": "official", "versions": [ + "v1.0.0", "v0.4.1", "v0.4.0", "v0.3.0", @@ -123,7 +127,12 @@ ], "compliance": { "grade": "C", - "level": 80 + "issues": [ + "smoke", + "examples", + "types" + ], + "level": 81 }, "description": "Inject faults to test", "imports": [ @@ -141,8 +150,8 @@ "name": "xk6-disruptor", "owner": "grafana", "public": true, - "stars": 93, - "timestamp": 1727763654, + "stars": 97, + "timestamp": 1733824028, "topics": [ "chaos-engineering", "fault-injection", @@ -154,6 +163,8 @@ }, "tier": "official", "versions": [ + "v0.3.13", + "v0.3.12", "v0.3.11", "v0.3.10", "v0.3.9", @@ -181,8 +192,11 @@ "data" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "B", + "issues": [ + "smoke" + ], + "level": 93 }, "description": "Generate random fake data", "imports": [ @@ -200,8 +214,8 @@ "name": "xk6-faker", "owner": "grafana", "public": true, - "stars": 55, - "timestamp": 1725533453, + "stars": 63, + "timestamp": 1733730893, "topics": [ "xk6" ], @@ -224,8 +238,12 @@ "misc" ], "compliance": { - "grade": "A", - "level": 100 + "grade": "C", + "issues": [ + "smoke", + "types" + ], + "level": 87 }, "description": "Print ASCII art banner from k6 test", "imports": [ @@ -289,6 +307,7 @@ }, "tier": "official", "versions": [ + "v0.55.0", "v0.54.0", "v0.53.0", "v0.52.0", diff --git a/docs/registry.schema.json b/docs/registry.schema.json index 904a1ee..aa65083 100644 --- a/docs/registry.schema.json +++ b/docs/registry.schema.json @@ -587,7 +587,8 @@ "default": 0, "description": "Number of extensions without CODEOWNERS file." } - } + }, + "example": "{\n \"registry_category_authentication_count\": 2,\n \"registry_category_browser_count\": 1,\n \"registry_category_data_count\": 23,\n \"registry_category_kubernetes_count\": 2,\n \"registry_category_messaging_count\": 11,\n \"registry_category_misc_count\": 16,\n \"registry_category_observability_count\": 12,\n \"registry_category_protocol_count\": 10,\n \"registry_category_reporting_count\": 13,\n \"registry_cgo_count\": 1,\n \"registry_extension_count\": 72,\n \"registry_grade_a_count\": 19,\n \"registry_grade_b_count\": 4,\n \"registry_grade_c_count\": 44,\n \"registry_grade_d_count\": 4,\n \"registry_grade_e_count\": 1,\n \"registry_issue_build_count\": 5,\n \"registry_issue_codeowners_count\": 5,\n \"registry_issue_examples_count\": 16,\n \"registry_issue_replace_count\": 2,\n \"registry_issue_smoke_count\": 51,\n \"registry_issue_types_count\": 44,\n \"registry_product_cloud_count\": 4,\n \"registry_product_oss_count\": 71,\n \"registry_product_synthetic_count\": 2,\n \"registry_tier_community_count\": 54,\n \"registry_tier_official_count\": 18,\n \"registry_tier_unofficial_count\": 6,\n \"registry_type_javascript_count\": 57,\n \"registry_type_output_count\": 16\n}\n" } } } diff --git a/metrics.go b/metrics.go index 4750f88..92f2035 100644 --- a/metrics.go +++ b/metrics.go @@ -1,14 +1,25 @@ package k6registry -import "strings" - -// CalculateMetrics calculates registry metrics. +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "time" +) + +// CalculateMetrics calculates registry metrics for all extensions. func CalculateMetrics(reg Registry) *Metrics { + return CalculateMetricsCond(reg, func(_ Extension) bool { return true }) +} + +// CalculateMetricsCond calculates registry metrics for subset of extensions. +func CalculateMetricsCond(reg Registry, predicate func(Extension) bool) *Metrics { const k6Module = "go.k6.io/k6" m := new(Metrics) for _, ext := range reg { - if ext.Module == k6Module { + if ext.Module == k6Module || !predicate(ext) { continue } @@ -156,3 +167,32 @@ func (m *Metrics) issue(issue string) { default: } } + +// MarshalPrometheus marshals metrics in Prometheus text format. +func (m *Metrics) MarshalPrometheus() ([]byte, error) { + data, err := json.Marshal(m) + if err != nil { + return nil, err + } + + var dict map[string]int + + if err := json.Unmarshal(data, &dict); err != nil { + return nil, err + } + + var buff bytes.Buffer + + now := time.Now().UnixMilli() + + for name, value := range dict { + if help, hasHelp := metricsHelps[name]; hasHelp { + fmt.Fprintf(&buff, "# HELP %s %s\n", name, help) + } + + fmt.Fprintf(&buff, "# TYPE %s counter\n", name) + fmt.Fprintf(&buff, "%s %d %d\n", name, value, now) + } + + return buff.Bytes(), nil +} diff --git a/metrics_gen.go b/metrics_gen.go new file mode 100644 index 0000000..1ce5e48 --- /dev/null +++ b/metrics_gen.go @@ -0,0 +1,6 @@ +// Code generated by metrics_gen.sh, DO NOT EDIT. + +package k6registry + +var metricsHelps = map[string]string {"registry_extension_count":"The total number of extensions.","registry_tier_official_count":"Number of extensions in the 'official' tier.","registry_tier_unofficial_count":"Number of unofficial extensions.","registry_tier_partner_count":"Number of extensions in the 'partner' tier.","registry_tier_community_count":"Number of extension in the community' tier.","registry_type_javascript_count":"Number of JavaScript extension.","registry_type_output_count":"Number of Output extension.","registry_product_cloud_count":"Number of extensions available in Grafana Cloud k6.","registry_product_oss_count":"Number of extensions available in Grafana k6.","registry_product_synthetic_count":"Number of extensions available in Synthetic Monitoring.","registry_grade_a_count":"Number of A-grade extensions.","registry_grade_b_count":"Number of B-grade extensions.","registry_grade_c_count":"Number of C-grade extensions.","registry_grade_d_count":"Number of D-grade extensions.","registry_grade_e_count":"Number of E-grade extensions.","registry_grade_f_count":"Number of F-grade extensions.","registry_cgo_count":"Number of extensions requiring cgo.","registry_category_authentication_count":"Number of extensions in the 'authentication' category.","registry_category_browser_count":"Number of extensions in the 'browser' category.","registry_category_data_count":"Number of extensions in the 'data' category.","registry_category_kubernetes_count":"Number of extensions in the 'kubernetes' category.","registry_category_messaging_count":"Number of extensions in the 'messaging' category.","registry_category_misc_count":"Number of extensions in the 'misc' category.","registry_category_observability_count":"Number of extensions in the 'observability' category.","registry_category_protocol_count":"Number of extensions in the 'protocol' category.","registry_category_reporting_count":"Number of extensions in the 'reporting' category.","registry_issue_module_count":"Number of extensions without valid go.mod.","registry_issue_replace_count":"Number of extensions with replace directive in go.mod.","registry_issue_readme_count":"Number of extensions without readme file.","registry_issue_examples_count":"Number of extensions without examples directory.","registry_issue_license_count":"Number of extensions without suitable OSS license.","registry_issue_git_count":"Number of extensions without git workdir.","registry_issue_versions_count":"Number of extensions without semantic versioning git tags.","registry_issue_build_count":"Number of extensions not buildable with the latest k6 version.","registry_issue_smoke_count":"Number of extensions without smoke test script.","registry_issue_types_count":"Number of extensions without API declaration file.","registry_issue_codeowners_count":"Number of extensions without CODEOWNERS file."} + diff --git a/metrics_gen.sh b/metrics_gen.sh new file mode 100644 index 0000000..9abf2a5 --- /dev/null +++ b/metrics_gen.sh @@ -0,0 +1,8 @@ +cat > metrics_gen.go <