diff options
Diffstat (limited to 'spec/fixtures')
37 files changed, 2288 insertions, 1201 deletions
diff --git a/spec/fixtures/achievements.yml b/spec/fixtures/achievements.yml deleted file mode 100644 index a24cf42413b..00000000000 --- a/spec/fixtures/achievements.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -table_name: achievements -classes: -- Achievements::Achievement -feature_categories: -- feature_category_example -description: Achievements which can be created by namespaces to award them to users -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105871 -milestone: '15.7' -gitlab_schema: gitlab_main diff --git a/spec/fixtures/api/schemas/entities/diff_viewer.json b/spec/fixtures/api/schemas/entities/diff_viewer.json index b16f8d8b1a2..6fa1604e505 100644 --- a/spec/fixtures/api/schemas/entities/diff_viewer.json +++ b/spec/fixtures/api/schemas/entities/diff_viewer.json @@ -26,6 +26,12 @@ "boolean" ] }, + "generated": { + "type": [ + "boolean", + "null" + ] + }, "whitespace_only": { "type": [ "boolean", diff --git a/spec/fixtures/api/schemas/graphql/container_repository.json b/spec/fixtures/api/schemas/graphql/container_repository.json index 2bb598a14cb..95cc5e28b34 100644 --- a/spec/fixtures/api/schemas/graphql/container_repository.json +++ b/spec/fixtures/api/schemas/graphql/container_repository.json @@ -1,6 +1,19 @@ { "type": "object", - "required": ["id", "name", "path", "location", "createdAt", "updatedAt", "tagsCount", "canDelete", "expirationPolicyCleanupStatus", "project", "lastCleanupDeletedTagsCount"], + "required": [ + "id", + "name", + "path", + "location", + "createdAt", + "updatedAt", + "tagsCount", + "canDelete", + "expirationPolicyCleanupStatus", + "project", + "lastCleanupDeletedTagsCount", + "userPermissions" + ], "properties": { "id": { "type": "string" @@ -21,10 +34,16 @@ "type": "string" }, "expirationPolicyStartedAt": { - "type": ["string", "null"] + "type": [ + "string", + "null" + ] }, "status": { - "type": ["string", "null"] + "type": [ + "string", + "null" + ] }, "tagsCount": { "type": "integer" @@ -34,13 +53,30 @@ }, "expirationPolicyCleanupStatus": { "type": "string", - "enum": ["UNSCHEDULED", "SCHEDULED", "UNFINISHED", "ONGOING"] + "enum": [ + "UNSCHEDULED", + "SCHEDULED", + "UNFINISHED", + "ONGOING" + ] }, "project": { "type": "object" }, "lastCleanupDeletedTagsCount": { - "type": ["string", "null"] + "type": [ + "string", + "null" + ] + }, + "userPermissions": { + "type": "object", + "additionalProperties": false, + "properties": { + "destroyContainerRepository": { + "type": "boolean" + } + } } } } diff --git a/spec/fixtures/api/schemas/graphql/container_repository_details.json b/spec/fixtures/api/schemas/graphql/container_repository_details.json index 3156b6d58d5..dccdd85274d 100644 --- a/spec/fixtures/api/schemas/graphql/container_repository_details.json +++ b/spec/fixtures/api/schemas/graphql/container_repository_details.json @@ -1,17 +1,31 @@ { "type": "object", - "required": ["tags"], - "allOf": [{ "$ref": "./container_repository.json" }], + "required": [ + "tags" + ], + "allOf": [ + { + "$ref": "./container_repository.json" + } + ], "properties": { "tags": { "type": "object", - "required": ["nodes"], + "required": [ + "nodes" + ], "properties": { "nodes": { "type": "array", "items": { "type": "object", - "required": ["name", "path", "location", "canDelete"], + "required": [ + "name", + "path", + "location", + "canDelete", + "userPermissions" + ], "properties": { "name": { "type": "string" @@ -39,6 +53,15 @@ }, "canDelete": { "type": "boolean" + }, + "userPermissions": { + "type": "object", + "additionalProperties": false, + "properties": { + "destroyContainerRepositoryTag": { + "type": "boolean" + } + } } } } diff --git a/spec/fixtures/api/schemas/group_link/group_group_link.json b/spec/fixtures/api/schemas/group_link/group_group_link.json index 689679cbc0f..d67fdaaf762 100644 --- a/spec/fixtures/api/schemas/group_link/group_group_link.json +++ b/spec/fixtures/api/schemas/group_link/group_group_link.json @@ -1,21 +1,45 @@ { "type": "object", "allOf": [ - { "$ref": "group_link.json" }, + { + "$ref": "group_link.json" + }, { "required": [ - "source" + "source", + "valid_roles", + "can_update", + "can_remove" ], "properties": { "source": { "type": "object", - "required": ["id", "full_name", "web_url"], + "required": [ + "id", + "full_name", + "web_url" + ], "properties": { - "id": { "type": "integer" }, - "full_name": { "type": "string" }, - "web_url": { "type": "string" } + "id": { + "type": "integer" + }, + "full_name": { + "type": "string" + }, + "web_url": { + "type": "string" + } }, "additionalProperties": false + }, + "valid_roles": { + "type": "object" + }, + "can_update": { + "type": "boolean" + }, + "can_remove": { + "type": "boolean" } } } diff --git a/spec/fixtures/api/schemas/group_link/group_link.json b/spec/fixtures/api/schemas/group_link/group_link.json index 4db38952ecc..421864b2bd7 100644 --- a/spec/fixtures/api/schemas/group_link/group_link.json +++ b/spec/fixtures/api/schemas/group_link/group_link.json @@ -5,9 +5,6 @@ "created_at", "expires_at", "access_level", - "valid_roles", - "can_update", - "can_remove", "is_direct_member" ], "properties": { @@ -41,9 +38,6 @@ }, "additionalProperties": false }, - "valid_roles": { - "type": "object" - }, "is_shared_with_group_private": { "type": "boolean" }, @@ -82,12 +76,6 @@ }, "additionalProperties": false }, - "can_update": { - "type": "boolean" - }, - "can_remove": { - "type": "boolean" - }, "is_direct_member": { "type": "boolean" } diff --git a/spec/fixtures/api/schemas/group_link/project_group_link.json b/spec/fixtures/api/schemas/group_link/project_group_link.json index 615c808e5aa..854ae3c8693 100644 --- a/spec/fixtures/api/schemas/group_link/project_group_link.json +++ b/spec/fixtures/api/schemas/group_link/project_group_link.json @@ -1,20 +1,41 @@ { "type": "object", "allOf": [ - { "$ref": "group_link.json" }, + { + "$ref": "group_link.json" + }, { "required": [ - "source" + "source", + "valid_roles", + "can_update", + "can_remove" ], "properties": { "source": { "type": "object", - "required": ["id", "full_name"], + "required": [ + "id", + "full_name" + ], "properties": { - "id": { "type": "integer" }, - "full_name": { "type": "string" } + "id": { + "type": "integer" + }, + "full_name": { + "type": "string" + } }, "additionalProperties": false + }, + "valid_roles": { + "type": "object" + }, + "can_update": { + "type": "boolean" + }, + "can_remove": { + "type": "boolean" } } } diff --git a/spec/fixtures/api/schemas/ml/get_model.json b/spec/fixtures/api/schemas/ml/get_model.json index 6b7ced6845b..2e97fab5134 100644 --- a/spec/fixtures/api/schemas/ml/get_model.json +++ b/spec/fixtures/api/schemas/ml/get_model.json @@ -19,13 +19,13 @@ "type": "string" }, "user_id": { - "type": "integer" + "type": "string" }, "creation_timestamp": { - "type": "string" + "type": "integer" }, "last_updated_timestamp": { - "type": "string" + "type": "integer" }, "tags": { "type": "array", diff --git a/spec/fixtures/api/schemas/ml/get_model_version.json b/spec/fixtures/api/schemas/ml/get_model_version.json new file mode 100644 index 00000000000..214c993ed73 --- /dev/null +++ b/spec/fixtures/api/schemas/ml/get_model_version.json @@ -0,0 +1,75 @@ +{ + "type": "object", + "required": [ + "model_version" + ], + "properties": { + "model_version": { + "type": "object", + "required": [ + "name", + "version", + "creation_timestamp", + "last_updated_timestamp", + "user_id", + "current_stage", + "description", + "source", + "run_id", + "status", + "status_message", + "metadata", + "run_link", + "aliases" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "creation_timestamp": { + "type": "integer" + }, + "last_updated_timestamp": { + "type": "integer" + }, + "user_id": { + "type": "null" + }, + "current_stage": { + "type": "string" + }, + "description": { + "type": "string" + }, + "source": { + "type": "string" + }, + "run_id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "status_message": { + "type": "string" + }, + "metadata": { + "type": "array", + "items": { + } + }, + "run_link": { + "type": "string" + }, + "aliases": { + "type": "array", + "items": { + } + } + } + } + } +} diff --git a/spec/fixtures/api/schemas/ml/list_models.json b/spec/fixtures/api/schemas/ml/list_models.json new file mode 100644 index 00000000000..eaeaa268dde --- /dev/null +++ b/spec/fixtures/api/schemas/ml/list_models.json @@ -0,0 +1,53 @@ +{ + "type": "object", + "required": [ + "registered_models", + "next_page_token" + ], + "properties": { + "registered_models": { + "type": "array", + "items": { + "type": "object", + "required": [ + + ], + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "creation_timestamp": { + "type": "integer" + }, + "last_updated_timestamp": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "required": [ + "key", + "value" + ], + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + } + } + } + } +} diff --git a/spec/fixtures/api/schemas/public_api/v4/project_hook.json b/spec/fixtures/api/schemas/public_api/v4/project_hook.json index b89f5af8078..c42a4cad712 100644 --- a/spec/fixtures/api/schemas/public_api/v4/project_hook.json +++ b/spec/fixtures/api/schemas/public_api/v4/project_hook.json @@ -22,9 +22,11 @@ "releases_events", "alert_status", "disabled_until", - "url_variables", "emoji_events" ], + "optional": [ + "url_variables" + ], "properties": { "id": { "type": "integer" diff --git a/spec/fixtures/api/schemas/public_api/v4/project_repository_storage_move.json b/spec/fixtures/api/schemas/public_api/v4/project_repository_storage_move.json index cfaa1c28bb7..21f466bc418 100644 --- a/spec/fixtures/api/schemas/public_api/v4/project_repository_storage_move.json +++ b/spec/fixtures/api/schemas/public_api/v4/project_repository_storage_move.json @@ -8,13 +8,32 @@ "destination_storage_name", "project" ], - "properties" : { - "id": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "state": { "type": "string" }, - "source_storage_name": { "type": "string" }, - "destination_storage_name": { "type": "string" }, - "project": { "type": "object" } + "properties": { + "id": { + "type": "integer" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "state": { + "type": "string" + }, + "source_storage_name": { + "type": "string" + }, + "destination_storage_name": { + "type": "string" + }, + "error_message": { + "type": [ + "string", + "null" + ] + }, + "project": { + "type": "object" + } }, "additionalProperties": false } diff --git a/spec/fixtures/api/schemas/public_api/v4/snippet_repository_storage_move.json b/spec/fixtures/api/schemas/public_api/v4/snippet_repository_storage_move.json index b0633a6ff2d..65494e27f5c 100644 --- a/spec/fixtures/api/schemas/public_api/v4/snippet_repository_storage_move.json +++ b/spec/fixtures/api/schemas/public_api/v4/snippet_repository_storage_move.json @@ -8,13 +8,32 @@ "destination_storage_name", "snippet" ], - "properties" : { - "id": { "type": "integer" }, - "created_at": { "type": "string", "format": "date-time" }, - "state": { "type": "string" }, - "source_storage_name": { "type": "string" }, - "destination_storage_name": { "type": "string" }, - "snippet": { "type": "object" } + "properties": { + "id": { + "type": "integer" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "state": { + "type": "string" + }, + "source_storage_name": { + "type": "string" + }, + "destination_storage_name": { + "type": "string" + }, + "error_message": { + "type": [ + "string", + "null" + ] + }, + "snippet": { + "type": "object" + } }, "additionalProperties": false } diff --git a/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/1_create_some_table_on_main_db.rb b/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/1_create_some_table_on_main_db.rb deleted file mode 100644 index 98d71d9507b..00000000000 --- a/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/1_create_some_table_on_main_db.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -# rubocop: disable Gitlab/NamespacedClass -- Fixtures do not need to be namespaced -class CreateSomeTableOnMainDb < ClickHouse::Migration - def up - execute <<~SQL - CREATE TABLE some ( - id UInt64, - date Date - ) ENGINE = MergeTree - PRIMARY KEY(id) - SQL - end -end -# rubocop: enable Gitlab/NamespacedClass diff --git a/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/2_create_some_table_on_another_db.rb b/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/2_create_some_table_on_another_db.rb deleted file mode 100644 index b8cd86a67f5..00000000000 --- a/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/2_create_some_table_on_another_db.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -# rubocop: disable Gitlab/NamespacedClass -- Fixtures do not need to be namespaced -class CreateSomeTableOnAnotherDb < ClickHouse::Migration - SCHEMA = :another_db - - def up - execute <<~SQL - CREATE TABLE some_on_another_db ( - id UInt64, - date Date - ) ENGINE = Memory - SQL - end -end -# rubocop: enable Gitlab/NamespacedClass diff --git a/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/3_change_some_table_on_main_db.rb b/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/3_change_some_table_on_main_db.rb deleted file mode 100644 index 9112ab79fc5..00000000000 --- a/spec/fixtures/click_house/migrations/migrations_over_multiple_databases/3_change_some_table_on_main_db.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -# rubocop: disable Gitlab/NamespacedClass -- Fixtures do not need to be namespaced -class ChangeSomeTableOnMainDb < ClickHouse::Migration - def up - execute <<~SQL - ALTER TABLE some RENAME COLUMN date to timestamp - SQL - end -end -# rubocop: enable Gitlab/NamespacedClass diff --git a/spec/fixtures/click_house/migrations/plain_table_creation_on_invalid_database/1_create_some_table.rb b/spec/fixtures/click_house/migrations/table_creation_with_down_method/2_create_another_table.rb index ee900ef24c5..4a6f841a727 100644 --- a/spec/fixtures/click_house/migrations/plain_table_creation_on_invalid_database/1_create_some_table.rb +++ b/spec/fixtures/click_house/migrations/table_creation_with_down_method/2_create_another_table.rb @@ -1,16 +1,20 @@ # frozen_string_literal: true # rubocop: disable Gitlab/NamespacedClass -- Fixtures do not need to be namespaced -class CreateSomeTable < ClickHouse::Migration - SCHEMA = :unknown_database - +class CreateAnotherTable < ClickHouse::Migration def up execute <<~SQL - CREATE TABLE some ( + CREATE TABLE another ( id UInt64, date Date ) ENGINE = Memory SQL end + + def down + execute <<~SQL + DROP TABLE another + SQL + end end # rubocop: enable Gitlab/NamespacedClass diff --git a/spec/fixtures/csv_complex.csv b/spec/fixtures/csv_complex.csv index 60d8aa5d6f7..b42a5e99d88 100644 --- a/spec/fixtures/csv_complex.csv +++ b/spec/fixtures/csv_complex.csv @@ -1,6 +1,6 @@ -title,description,due date +title,description,due date,milestone Issue in ä¸æ–‡,Test description, "Hello","World", "Title with quote""","Description /assign @csv_assignee -/estimate 1h",2022-06-28 +/estimate 1h",2022-06-28,15.10 diff --git a/spec/fixtures/csv_gitlab_export.csv b/spec/fixtures/csv_gitlab_export.csv index 65422509eef..a39260f9dff 100644 --- a/spec/fixtures/csv_gitlab_export.csv +++ b/spec/fixtures/csv_gitlab_export.csv @@ -2,4 +2,4 @@ Issue ID,URL,Title,State,Description,Author,Author Username,Assignee,Assignee Us 1,http://localhost:3000/jashkenas/underscore/issues/1,Title,Open,,Elva Jerde,jamel,Tierra Effertz,aurora_hahn,No,No,,2020-01-17 10:36:26,2020-02-19 10:36:26,,v1.0,,"Brene,Cutlass,Escort,GVM",0,0,, 3,http://localhost:3000/jashkenas/underscore/issues/3,Nihil impedit neque quos totam ut aut enim cupiditate doloribus molestiae.,Open,Omnis aliquid sint laudantium quam.,Marybeth Goodwin,rocio.blanda,Annemarie Von,reynalda_howe,No,No,,2020-01-23 10:36:26,2020-02-19 10:36:27,,v1.0,,"Brene,Cutlass,Escort,GVM",0,0,, 34,http://localhost:3000/jashkenas/underscore/issues/34,Dismiss Cipher with no integrity,Open,,Marybeth Goodwin,rocio.blanda,"","",No,No,,2020-02-19 10:38:49,2020-02-19 10:38:49,,,,,0,0,, -35,http://localhost:3000/jashkenas/underscore/issues/35,Test Title,Open,Test Description,Marybeth Goodwin,rocio.blanda,"","",No,No,,2020-02-19 10:38:49,2020-02-19 10:38:49,,,,,0,0,, +35,http://localhost:3000/jashkenas/underscore/issues/35,Test Title,Open,Test Description,Marybeth Goodwin,rocio.blanda,"","",No,No,,2020-02-19 10:38:49,2020-02-19 10:38:49,,v1.0,,,0,0,, diff --git a/spec/fixtures/importers/bitbucket_server/activities.json b/spec/fixtures/importers/bitbucket_server/activities.json index ddcb94b8f58..e8873702a61 100644 --- a/spec/fixtures/importers/bitbucket_server/activities.json +++ b/spec/fixtures/importers/bitbucket_server/activities.json @@ -1,1146 +1,1208 @@ { - "isLastPage": true, - "limit": 25, - "size": 8, - "start": 0, - "values": [ - { - "action": "COMMENTED", - "comment": { + "isLastPage": true, + "limit": 25, + "size": 8, + "start": 0, + "values": [ + { + "action": "COMMENTED", + "comment": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + { "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" }, "comments": [ - { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [ - { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [], - "createdDate": 1530164016725, - "id": 11, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [ - { - "anchor": { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "createdDate": 1530164016725, - "id": 11, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "text": "Ok", - "type": "COMMENT", - "updatedDate": 1530164016725, - "version": 0 - }, - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "createdDate": 1530164026000, - "id": 1, - "permittedOperations": { - "deletable": true, - "editable": true, - "transitionable": true - }, - "state": "OPEN", - "text": "here's a task" - } - ], - "text": "Ok", - "updatedDate": 1530164016725, - "version": 0 - }, - { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [], - "createdDate": 1530165543990, - "id": 12, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "hi", - "updatedDate": 1530165543990, - "version": 0 - } - ], - "createdDate": 1530164013718, - "id": 10, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "Hello world", - "updatedDate": 1530164013718, - "version": 0 - }, - { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [], - "createdDate": 1530165549932, - "id": 13, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "hello", - "updatedDate": 1530165549932, - "version": 0 - } + ], - "createdDate": 1530161499144, - "id": 9, + "createdDate": 1530164016725, + "id": 11, "permittedOperations": { - "deletable": true, - "editable": true + "deletable": true, + "editable": true }, "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "is this a new line?", - "updatedDate": 1530161499144, - "version": 0 - }, - "commentAction": "ADDED", - "commentAnchor": { - "diffType": "EFFECTIVE", - "fileType": "TO", - "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", - "line": 1, - "lineType": "ADDED", - "orphaned": false, - "path": "CHANGELOG.md", - "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" - }, - "createdDate": 1530161499144, - "diff": { - "destination": { - "components": [ - "CHANGELOG.md" - ], - "extension": "md", - "name": "CHANGELOG.md", - "parent": "", - "toString": "CHANGELOG.md" + "repositoryId": 1 }, - "hunks": [ - { - "destinationLine": 1, - "destinationSpan": 11, - "segments": [ + "tasks": [ + { + "anchor": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ { - "lines": [ - { - "commentIds": [ - 9 - ], - "destination": 1, - "line": "# Edit 1", - "source": 1, - "truncated": false - }, - { - "destination": 2, - "line": "", - "source": 1, - "truncated": false - } - ], - "truncated": false, - "type": "ADDED" - }, - { - "lines": [ - { - "destination": 3, - "line": "# ChangeLog", - "source": 1, - "truncated": false - }, - { - "destination": 4, - "line": "", - "source": 2, - "truncated": false - }, - { - "destination": 5, - "line": "This log summarizes the changes in each released version of rouge. The versioning scheme", - "source": 3, - "truncated": false - }, - { - "destination": 6, - "line": "we use is semver, although we will often release new lexers in minor versions, as a", - "source": 4, - "truncated": false - }, - { - "destination": 7, - "line": "practical matter.", - "source": 5, - "truncated": false - }, - { - "destination": 8, - "line": "", - "source": 6, - "truncated": false - }, - { - "destination": 9, - "line": "## version TBD: (unreleased)", - "source": 7, - "truncated": false - }, - { - "destination": 10, - "line": "", - "source": 8, - "truncated": false - }, - { - "destination": 11, - "line": "* General", - "source": 9, - "truncated": false - } - ], - "truncated": false, - "type": "CONTEXT" + "href": "http://localhost:7990/users/root" } - ], - "sourceLine": 1, - "sourceSpan": 9, - "truncated": false - } - ], - "properties": { - "current": true, - "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", - "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" - }, - "source": null, - "truncated": false - }, - "id": 19, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - } - }, - { - "action": "COMMENTED", - "comment": { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "createdDate": 1530164016725, + "id": 11, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "text": "Ok", + "type": "COMMENT", + "updatedDate": 1530164016725, + "version": 0 + }, + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { "self": [ - { - "href": "http://localhost:7990/users/root" - } + { + "href": "http://localhost:7990/users/root" + } ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "createdDate": 1530164026000, + "id": 1, + "permittedOperations": { + "deletable": true, + "editable": true, + "transitionable": true + }, + "state": "OPEN", + "text": "here's a task" + } + ], + "text": "Ok", + "updatedDate": 1530164016725, + "version": 0 + }, + { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" }, - "comments": [], - "createdDate": 1530053198463, - "id": 7, + "comments": [ + + ], + "createdDate": 1530165543990, + "id": 12, "permittedOperations": { - "deletable": true, - "editable": true + "deletable": true, + "editable": true }, "properties": { - "repositoryId": 1 + "repositoryId": 1 }, - "tasks": [], - "text": "What about this line?", - "updatedDate": 1530053198463, + "tasks": [ + + ], + "text": "hi", + "updatedDate": 1530165543990, "version": 0 + } + ], + "createdDate": 1530164013718, + "id": 10, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "Hello world", + "updatedDate": 1530164013718, + "version": 0 + }, + { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + + ], + "createdDate": 1530165549932, + "id": 13, + "permittedOperations": { + "deletable": true, + "editable": true }, - "commentAction": "ADDED", - "commentAnchor": { - "diffType": "EFFECTIVE", - "fileType": "FROM", - "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", - "line": 9, - "lineType": "CONTEXT", - "orphaned": false, - "path": "CHANGELOG.md", - "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + "properties": { + "repositoryId": 1 }, - "createdDate": 1530053198463, - "diff": { - "destination": { - "components": [ - "CHANGELOG.md" + "tasks": [ + + ], + "text": "hello", + "updatedDate": 1530165549932, + "version": 0 + } + ], + "createdDate": 1530161499144, + "id": 9, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "is this a new line?", + "updatedDate": 1530161499144, + "version": 0 + }, + "commentAction": "ADDED", + "commentAnchor": { + "diffType": "EFFECTIVE", + "fileType": "TO", + "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", + "line": 1, + "lineType": "ADDED", + "orphaned": false, + "path": "CHANGELOG.md", + "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + }, + "createdDate": 1530161499144, + "diff": { + "destination": { + "components": [ + "CHANGELOG.md" + ], + "extension": "md", + "name": "CHANGELOG.md", + "parent": "", + "toString": "CHANGELOG.md" + }, + "hunks": [ + { + "destinationLine": 1, + "destinationSpan": 11, + "segments": [ + { + "lines": [ + { + "commentIds": [ + 9 ], - "extension": "md", - "name": "CHANGELOG.md", - "parent": "", - "toString": "CHANGELOG.md" - }, - "hunks": [ - { - "destinationLine": 1, - "destinationSpan": 12, - "segments": [ - { - "lines": [ - { - "destination": 1, - "line": "# Edit 1", - "source": 1, - "truncated": false - }, - { - "destination": 2, - "line": "", - "source": 1, - "truncated": false - } - ], - "truncated": false, - "type": "ADDED" - }, - { - "lines": [ - { - "destination": 3, - "line": "# ChangeLog", - "source": 1, - "truncated": false - }, - { - "destination": 4, - "line": "", - "source": 2, - "truncated": false - }, - { - "destination": 5, - "line": "This log summarizes the changes in each released version of rouge. The versioning scheme", - "source": 3, - "truncated": false - }, - { - "destination": 6, - "line": "we use is semver, although we will often release new lexers in minor versions, as a", - "source": 4, - "truncated": false - }, - { - "destination": 7, - "line": "practical matter.", - "source": 5, - "truncated": false - }, - { - "destination": 8, - "line": "", - "source": 6, - "truncated": false - }, - { - "destination": 9, - "line": "## version TBD: (unreleased)", - "source": 7, - "truncated": false - }, - { - "destination": 10, - "line": "", - "source": 8, - "truncated": false - }, - { - "commentIds": [ - 7 - ], - "destination": 11, - "line": "* General", - "source": 9, - "truncated": false - }, - { - "destination": 12, - "line": " * Load pastie theme ([#809](https://github.com/jneen/rouge/pull/809) by rramsden)", - "source": 10, - "truncated": false - } - ], - "truncated": false, - "type": "CONTEXT" - } - ], - "sourceLine": 1, - "sourceSpan": 10, - "truncated": false - } + "destination": 1, + "line": "# Edit 1", + "source": 1, + "truncated": false + }, + { + "destination": 2, + "line": "", + "source": 1, + "truncated": false + } ], - "properties": { - "current": true, - "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", - "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" - }, - "source": null, - "truncated": false - }, - "id": 14, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "truncated": false, + "type": "ADDED" + }, + { + "lines": [ + { + "destination": 3, + "line": "# ChangeLog", + "source": 1, + "truncated": false + }, + { + "destination": 4, + "line": "", + "source": 2, + "truncated": false + }, + { + "destination": 5, + "line": "This log summarizes the changes in each released version of rouge. The versioning scheme", + "source": 3, + "truncated": false + }, + { + "destination": 6, + "line": "we use is semver, although we will often release new lexers in minor versions, as a", + "source": 4, + "truncated": false + }, + { + "destination": 7, + "line": "practical matter.", + "source": 5, + "truncated": false + }, + { + "destination": 8, + "line": "", + "source": 6, + "truncated": false + }, + { + "destination": 9, + "line": "## version TBD: (unreleased)", + "source": 7, + "truncated": false + }, + { + "destination": 10, + "line": "", + "source": 8, + "truncated": false + }, + { + "destination": 11, + "line": "* General", + "source": 9, + "truncated": false + } + ], + "truncated": false, + "type": "CONTEXT" + } + ], + "sourceLine": 1, + "sourceSpan": 9, + "truncated": false + } + ], + "properties": { + "current": true, + "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", + "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + }, + "source": null, + "truncated": false + }, + "id": 19, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "COMMENTED", + "comment": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + + ], + "createdDate": 1530053198463, + "id": 7, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "What about this line?", + "updatedDate": 1530053198463, + "version": 0 + }, + "commentAction": "ADDED", + "commentAnchor": { + "diffType": "EFFECTIVE", + "fileType": "FROM", + "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", + "line": 9, + "lineType": "CONTEXT", + "orphaned": false, + "path": "CHANGELOG.md", + "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + }, + "createdDate": 1530053198463, + "diff": { + "destination": { + "components": [ + "CHANGELOG.md" + ], + "extension": "md", + "name": "CHANGELOG.md", + "parent": "", + "toString": "CHANGELOG.md" + }, + "hunks": [ + { + "destinationLine": 1, + "destinationSpan": 12, + "segments": [ + { + "lines": [ + { + "destination": 1, + "line": "# Edit 1", + "source": 1, + "truncated": false + }, + { + "destination": 2, + "line": "", + "source": 1, + "truncated": false + } + ], + "truncated": false, + "type": "ADDED" + }, + { + "lines": [ + { + "destination": 3, + "line": "# ChangeLog", + "source": 1, + "truncated": false + }, + { + "destination": 4, + "line": "", + "source": 2, + "truncated": false + }, + { + "destination": 5, + "line": "This log summarizes the changes in each released version of rouge. The versioning scheme", + "source": 3, + "truncated": false + }, + { + "destination": 6, + "line": "we use is semver, although we will often release new lexers in minor versions, as a", + "source": 4, + "truncated": false + }, + { + "destination": 7, + "line": "practical matter.", + "source": 5, + "truncated": false + }, + { + "destination": 8, + "line": "", + "source": 6, + "truncated": false + }, + { + "destination": 9, + "line": "## version TBD: (unreleased)", + "source": 7, + "truncated": false + }, + { + "destination": 10, + "line": "", + "source": 8, + "truncated": false + }, + { + "commentIds": [ + 7 + ], + "destination": 11, + "line": "* General", + "source": 9, + "truncated": false + }, + { + "destination": 12, + "line": " * Load pastie theme ([#809](https://github.com/jneen/rouge/pull/809) by rramsden)", + "source": 10, + "truncated": false + } + ], + "truncated": false, + "type": "CONTEXT" + } + ], + "sourceLine": 1, + "sourceSpan": 10, + "truncated": false + } + ], + "properties": { + "current": true, + "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", + "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + }, + "source": null, + "truncated": false + }, + "id": 14, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" } + ] }, - { - "action": "COMMENTED", - "comment": { + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "COMMENTED", + "comment": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + { "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" }, "comments": [ - { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [ - { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [], - "createdDate": 1530143330513, - "id": 8, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "How about this?", - "updatedDate": 1530143330513, - "version": 0 - } - ], - "createdDate": 1530053193795, - "id": 6, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "It does.", - "updatedDate": 1530053193795, - "version": 0 - } + ], - "createdDate": 1530053187904, - "id": 5, + "createdDate": 1530143330513, + "id": 8, "permittedOperations": { - "deletable": true, - "editable": true + "deletable": true, + "editable": true }, "properties": { - "repositoryId": 1 + "repositoryId": 1 }, - "tasks": [], - "text": "Does this line make sense?", - "updatedDate": 1530053187904, + "tasks": [ + + ], + "text": "How about this?", + "updatedDate": 1530143330513, "version": 0 + } + ], + "createdDate": 1530053193795, + "id": 6, + "permittedOperations": { + "deletable": true, + "editable": true }, - "commentAction": "ADDED", - "commentAnchor": { - "diffType": "EFFECTIVE", - "fileType": "FROM", - "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", - "line": 3, - "lineType": "CONTEXT", - "orphaned": false, - "path": "CHANGELOG.md", - "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + "properties": { + "repositoryId": 1 }, - "createdDate": 1530053187904, - "diff": { - "destination": { - "components": [ - "CHANGELOG.md" + "tasks": [ + + ], + "text": "It does.", + "updatedDate": 1530053193795, + "version": 0 + } + ], + "createdDate": 1530053187904, + "id": 5, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "Does this line make sense?", + "updatedDate": 1530053187904, + "version": 0 + }, + "commentAction": "ADDED", + "commentAnchor": { + "diffType": "EFFECTIVE", + "fileType": "FROM", + "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", + "line": 3, + "lineType": "CONTEXT", + "orphaned": false, + "path": "CHANGELOG.md", + "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + }, + "createdDate": 1530053187904, + "diff": { + "destination": { + "components": [ + "CHANGELOG.md" + ], + "extension": "md", + "name": "CHANGELOG.md", + "parent": "", + "toString": "CHANGELOG.md" + }, + "hunks": [ + { + "destinationLine": 1, + "destinationSpan": 12, + "segments": [ + { + "lines": [ + { + "destination": 1, + "line": "# Edit 1", + "source": 1, + "truncated": false + }, + { + "destination": 2, + "line": "", + "source": 1, + "truncated": false + } + ], + "truncated": false, + "type": "ADDED" + }, + { + "lines": [ + { + "destination": 3, + "line": "# ChangeLog", + "source": 1, + "truncated": false + }, + { + "destination": 4, + "line": "", + "source": 2, + "truncated": false + }, + { + "commentIds": [ + 5 ], - "extension": "md", - "name": "CHANGELOG.md", - "parent": "", - "toString": "CHANGELOG.md" - }, - "hunks": [ - { - "destinationLine": 1, - "destinationSpan": 12, - "segments": [ - { - "lines": [ - { - "destination": 1, - "line": "# Edit 1", - "source": 1, - "truncated": false - }, - { - "destination": 2, - "line": "", - "source": 1, - "truncated": false - } - ], - "truncated": false, - "type": "ADDED" - }, - { - "lines": [ - { - "destination": 3, - "line": "# ChangeLog", - "source": 1, - "truncated": false - }, - { - "destination": 4, - "line": "", - "source": 2, - "truncated": false - }, - { - "commentIds": [ - 5 - ], - "destination": 5, - "line": "This log summarizes the changes in each released version of rouge. The versioning scheme", - "source": 3, - "truncated": false - }, - { - "destination": 6, - "line": "we use is semver, although we will often release new lexers in minor versions, as a", - "source": 4, - "truncated": false - }, - { - "destination": 7, - "line": "practical matter.", - "source": 5, - "truncated": false - }, - { - "destination": 8, - "line": "", - "source": 6, - "truncated": false - }, - { - "destination": 9, - "line": "## version TBD: (unreleased)", - "source": 7, - "truncated": false - }, - { - "destination": 10, - "line": "", - "source": 8, - "truncated": false - }, - { - "destination": 11, - "line": "* General", - "source": 9, - "truncated": false - }, - { - "destination": 12, - "line": " * Load pastie theme ([#809](https://github.com/jneen/rouge/pull/809) by rramsden)", - "source": 10, - "truncated": false - } - ], - "truncated": false, - "type": "CONTEXT" - } - ], - "sourceLine": 1, - "sourceSpan": 10, - "truncated": false - } + "destination": 5, + "line": "This log summarizes the changes in each released version of rouge. The versioning scheme", + "source": 3, + "truncated": false + }, + { + "destination": 6, + "line": "we use is semver, although we will often release new lexers in minor versions, as a", + "source": 4, + "truncated": false + }, + { + "destination": 7, + "line": "practical matter.", + "source": 5, + "truncated": false + }, + { + "destination": 8, + "line": "", + "source": 6, + "truncated": false + }, + { + "destination": 9, + "line": "## version TBD: (unreleased)", + "source": 7, + "truncated": false + }, + { + "destination": 10, + "line": "", + "source": 8, + "truncated": false + }, + { + "destination": 11, + "line": "* General", + "source": 9, + "truncated": false + }, + { + "destination": 12, + "line": " * Load pastie theme ([#809](https://github.com/jneen/rouge/pull/809) by rramsden)", + "source": 10, + "truncated": false + } ], - "properties": { - "current": true, - "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", - "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" - }, - "source": null, - "truncated": false - }, - "id": 12, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "truncated": false, + "type": "CONTEXT" + } + ], + "sourceLine": 1, + "sourceSpan": 10, + "truncated": false + } + ], + "properties": { + "current": true, + "fromHash": "c5f4288162e2e6218180779c7f6ac1735bb56eab", + "toHash": "a4c2164330f2549f67c13f36a93884cf66e976be" + }, + "source": null, + "truncated": false + }, + "id": 12, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" } + ] }, - { - "action": "COMMENTED", - "comment": { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [], - "createdDate": 1529813304164, - "id": 4, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "Hello world", - "updatedDate": 1529813304164, - "version": 0 + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "COMMENTED", + "comment": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + + ], + "createdDate": 1529813304164, + "id": 4, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "Hello world", + "updatedDate": 1529813304164, + "version": 0 + }, + "commentAction": "ADDED", + "createdDate": 1529813304164, + "id": 11, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "MERGED", + "commit": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "authorTimestamp": 1529727872000, + "committer": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "committerTimestamp": 1529727872000, + "displayId": "839fa9a2d43", + "id": "839fa9a2d434eb697815b8fcafaecc51accfdbbc", + "message": "Merge pull request #1 in TEST/rouge from root/CHANGELOGmd-1529725646923 to master\n\n* commit '66fbe6a097803f0acb7342b19563f710657ce5a2':\n CHANGELOG.md edited online with Bitbucket", + "parents": [ + { + "author": { + "emailAddress": "dblessing@users.noreply.github.com", + "name": "Drew Blessing" }, - "commentAction": "ADDED", - "createdDate": 1529813304164, - "id": 11, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "authorTimestamp": 1529604583000, + "committer": { + "emailAddress": "noreply@github.com", + "name": "GitHub" + }, + "committerTimestamp": 1529604583000, + "displayId": "c5f4288162e", + "id": "c5f4288162e2e6218180779c7f6ac1735bb56eab", + "message": "Merge pull request #949 from jneen/dblessing-patch-1\n\nAdd 'obj-c', 'obj_c' as ObjectiveC aliases", + "parents": [ + { + "displayId": "ea7675f741e", + "id": "ea7675f741ee28f3f177ff32a9bde192742ffc59" + }, + { + "displayId": "386b95a977b", + "id": "386b95a977b331e267497aa5206861774656f0c5" + } + ] + }, + { + "author": { + "emailAddress": "test.user@example.com", + "name": "root" + }, + "authorTimestamp": 1529725651000, + "committer": { + "emailAddress": "test.user@example.com", + "name": "root" + }, + "committerTimestamp": 1529725651000, + "displayId": "66fbe6a0978", + "id": "66fbe6a097803f0acb7342b19563f710657ce5a2", + "message": "CHANGELOG.md edited online with Bitbucket", + "parents": [ + { + "displayId": "c5f4288162e", + "id": "c5f4288162e2e6218180779c7f6ac1735bb56eab" + } + ] + } + ] + }, + "createdDate": 1529727872302, + "id": 7, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" } + ] }, - { - "action": "MERGED", - "commit": { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "authorTimestamp": 1529727872000, - "committer": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "committerTimestamp": 1529727872000, - "displayId": "839fa9a2d43", - "id": "839fa9a2d434eb697815b8fcafaecc51accfdbbc", - "message": "Merge pull request #1 in TEST/rouge from root/CHANGELOGmd-1529725646923 to master\n\n* commit '66fbe6a097803f0acb7342b19563f710657ce5a2':\n CHANGELOG.md edited online with Bitbucket", - "parents": [ - { - "author": { - "emailAddress": "dblessing@users.noreply.github.com", - "name": "Drew Blessing" - }, - "authorTimestamp": 1529604583000, - "committer": { - "emailAddress": "noreply@github.com", - "name": "GitHub" - }, - "committerTimestamp": 1529604583000, - "displayId": "c5f4288162e", - "id": "c5f4288162e2e6218180779c7f6ac1735bb56eab", - "message": "Merge pull request #949 from jneen/dblessing-patch-1\n\nAdd 'obj-c', 'obj_c' as ObjectiveC aliases", - "parents": [ - { - "displayId": "ea7675f741e", - "id": "ea7675f741ee28f3f177ff32a9bde192742ffc59" - }, - { - "displayId": "386b95a977b", - "id": "386b95a977b331e267497aa5206861774656f0c5" - } - ] - }, - { - "author": { - "emailAddress": "test.user@example.com", - "name": "root" - }, - "authorTimestamp": 1529725651000, - "committer": { - "emailAddress": "test.user@example.com", - "name": "root" - }, - "committerTimestamp": 1529725651000, - "displayId": "66fbe6a0978", - "id": "66fbe6a097803f0acb7342b19563f710657ce5a2", - "message": "CHANGELOG.md edited online with Bitbucket", - "parents": [ - { - "displayId": "c5f4288162e", - "id": "c5f4288162e2e6218180779c7f6ac1735bb56eab" - } - ] - } + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "COMMENTED", + "comment": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" }, - "createdDate": 1529727872302, - "id": 7, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "comments": [ + + ], + "createdDate": 1529813297478, + "id": 3, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "This is a thread", + "updatedDate": 1529813297478, + "version": 0 + } + ], + "createdDate": 1529725692591, + "id": 2, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "What about this?", + "updatedDate": 1529725692591, + "version": 0 + }, + "commentAction": "ADDED", + "createdDate": 1529725692591, + "id": 6, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" } + ] }, - { - "action": "COMMENTED", - "comment": { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [ - { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [], - "createdDate": 1529813297478, - "id": 3, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "This is a thread", - "updatedDate": 1529813297478, - "version": 0 - } - ], - "createdDate": 1529725692591, - "id": 2, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "What about this?", - "updatedDate": 1529725692591, - "version": 0 - }, - "commentAction": "ADDED", - "createdDate": 1529725692591, - "id": 6, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "COMMENTED", + "comment": { + "author": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" + } + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + }, + "comments": [ + + ], + "createdDate": 1529725685910, + "id": 1, + "permittedOperations": { + "deletable": true, + "editable": true + }, + "properties": { + "repositoryId": 1 + }, + "tasks": [ + + ], + "text": "This is a test.\n\n[analyze.json](attachment:1/1f32f09d97%2Fanalyze.json)\n", + "updatedDate": 1529725685910, + "version": 0 + }, + "commentAction": "ADDED", + "createdDate": 1529725685910, + "id": 5, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" } + ] }, - { - "action": "COMMENTED", - "comment": { - "author": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" - }, - "comments": [], - "createdDate": 1529725685910, - "id": 1, - "permittedOperations": { - "deletable": true, - "editable": true - }, - "properties": { - "repositoryId": 1 - }, - "tasks": [], - "text": "This is a test.\n\n[analyze.json](attachment:1/1f32f09d97%2Fanalyze.json)\n", - "updatedDate": 1529725685910, - "version": 0 - }, - "commentAction": "ADDED", - "createdDate": 1529725685910, - "id": 5, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "OPENED", + "createdDate": 1529725657542, + "id": 4, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" } + ] }, - { - "action": "OPENED", - "createdDate": 1529725657542, - "id": 4, - "user": { - "active": true, - "displayName": "root", - "emailAddress": "test.user@example.com", - "id": 1, - "links": { - "self": [ - { - "href": "http://localhost:7990/users/root" - } - ] - }, - "name": "root", - "slug": "slug", - "username": "username", - "type": "NORMAL" + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + }, + { + "action": "APPROVED", + "createdDate": 1529725657542, + "id": 15, + "user": { + "active": true, + "displayName": "root", + "emailAddress": "test.user@example.com", + "id": 1, + "links": { + "self": [ + { + "href": "http://localhost:7990/users/root" } - } - ] + ] + }, + "name": "root", + "slug": "slug", + "username": "username", + "type": "NORMAL" + } + } + ] } diff --git a/spec/fixtures/scripts/internal_events/events/ee_event_without_identifiers.yml b/spec/fixtures/scripts/internal_events/events/ee_event_without_identifiers.yml new file mode 100644 index 00000000000..07f606fbe33 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/events/ee_event_without_identifiers.yml @@ -0,0 +1,14 @@ +--- +description: Internal Event CLI is opened +category: InternalEventTracking +action: internal_events_cli_opened +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +milestone: '16.6' +introduced_by_url: TODO +distributions: +- ee +tiers: +- premium +- ultimate diff --git a/spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml b/spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml new file mode 100644 index 00000000000..5050953920d --- /dev/null +++ b/spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml @@ -0,0 +1,20 @@ +--- +description: Engineer uses Internal Event CLI to define a new event +category: InternalEventTracking +action: internal_events_cli_used +identifiers: +- project +- namespace +- user +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +milestone: '16.6' +introduced_by_url: TODO +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/spec/fixtures/scripts/internal_events/events/keyboard_smashed_event.yml b/spec/fixtures/scripts/internal_events/events/keyboard_smashed_event.yml new file mode 100644 index 00000000000..c0ccbc03af7 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/events/keyboard_smashed_event.yml @@ -0,0 +1,20 @@ +--- +description: random event string +category: InternalEventTracking +action: random_name +identifiers: +- project +- namespace +- user +product_section: core_platform +product_stage: manage +product_group: import_and_integrate +milestone: '16.6' +introduced_by_url: TODO +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/spec/fixtures/scripts/internal_events/events/secondary_event_with_identifiers.yml b/spec/fixtures/scripts/internal_events/events/secondary_event_with_identifiers.yml new file mode 100644 index 00000000000..4e2e77e0c5c --- /dev/null +++ b/spec/fixtures/scripts/internal_events/events/secondary_event_with_identifiers.yml @@ -0,0 +1,20 @@ +--- +description: Engineer closes Internal Event CLI +category: InternalEventTracking +action: internal_events_cli_closed +identifiers: +- project +- namespace +- user +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +milestone: '16.6' +introduced_by_url: TODO +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/spec/fixtures/scripts/internal_events/metrics/ee_total_28d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/ee_total_28d_single_event.yml new file mode 100644 index 00000000000..ba56d782871 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/ee_total_28d_single_event.yml @@ -0,0 +1,25 @@ +--- +key_path: counts.count_total_internal_events_cli_used_monthly +description: Monthly count of when an event was defined using the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 28d +data_source: internal_events +data_category: optional +instrumentation_class: TotalCountMetric +distribution: +- ee +tier: +- premium +- ultimate +options: + events: + - internal_events_cli_used +events: +- name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml new file mode 100644 index 00000000000..e6bdcb9d2ae --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml @@ -0,0 +1,25 @@ +--- +key_path: counts.count_total_internal_events_cli_used_weekly +description: Weekly count of when an event was defined using the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 7d +data_source: internal_events +data_category: optional +instrumentation_class: TotalCountMetric +distribution: +- ee +tier: +- premium +- ultimate +options: + events: + - internal_events_cli_used +events: +- name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml new file mode 100644 index 00000000000..b1bf89dc095 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml @@ -0,0 +1,25 @@ +--- +key_path: counts.count_total_internal_events_cli_used +description: Total count of when an event was defined using the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: all +data_source: internal_events +data_category: optional +instrumentation_class: TotalCountMetric +distribution: +- ee +tier: +- premium +- ultimate +options: + events: + - internal_events_cli_used +events: +- name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml new file mode 100644 index 00000000000..8476cb8561b --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml @@ -0,0 +1,28 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_random_name_monthly +description: Monthly count of unique users random metric string +product_section: core_platform +product_stage: manage +product_group: import_and_integrate +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 28d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - random_name +events: +- name: random_name + unique: user.id diff --git a/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml new file mode 100644 index 00000000000..b4cc2fc8b55 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml @@ -0,0 +1,28 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_random_name_weekly +description: Weekly count of unique users random metric string +product_section: core_platform +product_stage: manage +product_group: import_and_integrate +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 7d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - random_name +events: +- name: random_name + unique: user.id diff --git a/spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml b/spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml new file mode 100644 index 00000000000..754702c8c74 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml @@ -0,0 +1,31 @@ +--- +key_path: redis_hll_counters.count_distinct_project_id_from_internal_events_cli_closed_and_internal_events_cli_used_monthly +description: Monthly count of unique projects where a defition file was created with the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 28d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - internal_events_cli_closed + - internal_events_cli_used +events: +- name: internal_events_cli_closed + unique: project.id +- name: internal_events_cli_used + unique: project.id diff --git a/spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml b/spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml new file mode 100644 index 00000000000..95f429e9b40 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml @@ -0,0 +1,31 @@ +--- +key_path: redis_hll_counters.count_distinct_project_id_from_internal_events_cli_closed_and_internal_events_cli_used_weekly +description: Weekly count of unique projects where a defition file was created with the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 7d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - internal_events_cli_closed + - internal_events_cli_used +events: +- name: internal_events_cli_closed + unique: project.id +- name: internal_events_cli_used + unique: project.id diff --git a/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml new file mode 100644 index 00000000000..5bdb4c45a52 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/total_single_event.yml @@ -0,0 +1,27 @@ +--- +key_path: counts.count_total_internal_events_cli_used +description: Total count of when an event was defined using the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: all +data_source: internal_events +data_category: optional +instrumentation_class: TotalCountMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - internal_events_cli_used +events: +- name: internal_events_cli_used diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml new file mode 100644 index 00000000000..b176b23b46a --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml @@ -0,0 +1,28 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_internal_events_cli_used_monthly +description: Monthly count of unique users who defined an internal event using the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 28d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - internal_events_cli_used +events: +- name: internal_events_cli_used + unique: user.id diff --git a/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml new file mode 100644 index 00000000000..8a0fca2cbdc --- /dev/null +++ b/spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml @@ -0,0 +1,28 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_internal_events_cli_used_weekly +description: Weekly count of unique users who defined an internal event using the CLI +product_section: analytics +product_stage: monitor +product_group: analytics_instrumentation +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.6' +introduced_by_url: TODO +time_frame: 7d +data_source: internal_events +data_category: optional +instrumentation_class: RedisHLLMetric +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - internal_events_cli_used +events: +- name: internal_events_cli_used + unique: user.id diff --git a/spec/fixtures/scripts/internal_events/new_events.yml b/spec/fixtures/scripts/internal_events/new_events.yml new file mode 100644 index 00000000000..6f39fc5e93c --- /dev/null +++ b/spec/fixtures/scripts/internal_events/new_events.yml @@ -0,0 +1,183 @@ +- description: Creates a new event and flows directly into metric creation + inputs: + keystrokes: + - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances + - "Engineer uses Internal Event CLI to define a new event\n" # Submit description + - "internal_events_cli_used\n" # Submit action name + - "1\n" # Select: [namespace, project, user] + - "\n" # Skip MR URL + - "instrumentation" # Filters to the analytics instrumentation group + - "\n" # Accept analytics:monitor:analytics_instrumentation + - "1\n" # Select: [free, premium, ultimate] + - "y\n" # Create file + - "1\n" # Select: Create Metric --- define a new metric + - "\e[A" # Arrow up to: Total count of events + - "\n" # Select: Total count of events + - "when an event was defined using the CLI\n" # Input description + - "1\n" # Select: Copy & continue + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + - path: config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/total_single_event.yml + +- description: Requires description & action before continuing + inputs: + keystrokes: + - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances + - "\n" # Attempt to skip writing description --> should get help message + - "Engineer uses Internal Event CLI to define a new event\n" # Submit description + - "\n" # Attempt to skip naming action --> should get help message + - "internal_events_cli_used\n" # Submit action name + - "1\n" # Select [namespace, project, user] + - "\n" # Skip MR URL + - "instrumentation" # Filters to the analytics instrumentation group + - "\n" # Accept analytics:monitor:analytics_instrumentation + - "1\n" # Select [free, premium, ultimate] + - "y\n" # Create file + - "3\n" # Exit + outputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + +- description: Does not allow existing events for action + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + keystrokes: + - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances + - "Engineer closes Internal Event CLI\n" # Submit description + - "internal_events_cli_used\n" # Submit already-existing action name + - "internal_events_cli_closed\n" # Submit alterred action name + - "1\n" # Select [namespace, project, user] + - "\n" # Skip MR URL + - "instrumentation" # Filters to the analytics instrumentation group + - "\n" # Accept analytics:monitor:analytics_instrumentation + - "1\n" # Select [free, premium, ultimate] + - "y\n" # Create file + - "3\n" # Exit + outputs: + files: + - path: config/events/internal_events_cli_closed.yml + content: spec/fixtures/scripts/internal_events/events/secondary_event_with_identifiers.yml + +- description: Creates a new event without identifiers + inputs: + keystrokes: + - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances + - "Internal Event CLI is opened\n" # Submit description + - "internal_events_cli_opened\n" # Submit action name + - "6\n" # Select: None + - "\n" # Skip MR URL + - "instrumentation" # Filters to the analytics instrumentation group + - "\n" # Accept analytics:monitor:analytics_instrumentation + - "2\n" # Select [premium, ultimate] + - "y\n" # Create file + - "3\n" # Exit + outputs: + files: + - path: ee/config/events/internal_events_cli_opened.yml + content: spec/fixtures/scripts/internal_events/events/ee_event_without_identifiers.yml + +- description: Smashing the keyboard/return creates an event & metrics with the most common attributes, then shows usage + inputs: + keystrokes: + - "\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances + - "random event string\n" # Submit keyboard-smashing description + - "random_name\n" # Submit keyboard-smashing action name + - "\n" # Select: [namespace, project, user] + - "\n" # Skip MR URL + - "\n" # Select core_platform:manage:import_and_integrate + - "\n" # Select [free, premium, ultimate] + - "\n" # Create file + - "\n" # Select: Create Metric --- define a new metric + - "\n" # Select: Weekly/Monthly count of unique users + - "random metric string\n" # Submit keyboard-smashing description + - "\n" # Accept weekly description for monthly + - "\n" # Select: Copy & continue + - "\n" # Skip URL + - "\n" # Create file + - "\n" # Create file + - "\n" # Select: View Usage -- look at code examples + - "\n" # Select: Ruby/Rails + - "8\n" # Exit + outputs: + files: + - path: config/events/random_name.yml + content: spec/fixtures/scripts/internal_events/events/keyboard_smashed_event.yml + - path: config/metrics/counts_28d/count_distinct_user_id_from_random_name_monthly.yml + content: spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_28d.yml + - path: config/metrics/counts_7d/count_distinct_user_id_from_random_name_weekly.yml + content: spec/fixtures/scripts/internal_events/metrics/keyboard_smashed_metric_7d.yml + +- description: Creates an event after helping the user figure out next steps + inputs: + keystrokes: + - "4\n" # Enum-select: ...am I in the right place? + - "y\n" # Yes --> Are you trying to track customer usage of a GitLab feature? + - "y\n" # Yes --> Can usage for the feature be measured by tracking a specific user action? + - "n\n" # No --> Is the event already tracked? + - "y\n" # Yes --> Ready to start? + - "Internal Event CLI is opened\n" # Submit description + - "internal_events_cli_opened\n" # Submit action name + - "6\n" # Select: None + - "\n" # Skip MR URL + - "instrumentation" # Filters to the analytics instrumentation group + - "\n" # Accept analytics:monitor:analytics_instrumentation + - "2\n" # Select [premium, ultimate] + - "y\n" # Create file + - "3\n" # Exit + outputs: + files: + - path: ee/config/events/internal_events_cli_opened.yml + content: spec/fixtures/scripts/internal_events/events/ee_event_without_identifiers.yml + +- description: Creates a new event and flows directly into usage examples + inputs: + keystrokes: + - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances + - "Engineer uses Internal Event CLI to define a new event\n" # Submit description + - "internal_events_cli_used\n" # Submit action name + - "1\n" # Select: [namespace, project, user] + - "\n" # Skip MR URL + - "instrumentation" # Filters to the analytics instrumentation group + - "\n" # Accept analytics:monitor:analytics_instrumentation + - "1\n" # Select: [free, premium, ultimate] + - "y\n" # Create file + - "2\n" # Select: View Usage + - "8\n" # Exit + outputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + +- description: Skips event creation, then saves event & flows directly into metric creation + inputs: + keystrokes: + - "1\n" # Enum-select: New Event -- start tracking when an action or scenario occurs on gitlab instances + - "Engineer uses Internal Event CLI to define a new event\n" # Submit description + - "internal_events_cli_used\n" # Submit action name + - "1\n" # Select: [namespace, project, user] + - "\n" # Skip MR URL + - "instrumentation" # Filters to the analytics instrumentation group + - "\n" # Accept analytics:monitor:analytics_instrumentation + - "1\n" # Select: [free, premium, ultimate] + - "n\n" # Create file + - "1\n" # Select: Save event & create Metric --- define a new metric + - "\e[A" # Arrow up to: Total count of events + - "\n" # Select: Total count of events + - "when an event was defined using the CLI\n" # Input description + - "1\n" # Select: Copy & continue + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + - path: config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/total_single_event.yml diff --git a/spec/fixtures/scripts/internal_events/new_metrics.yml b/spec/fixtures/scripts/internal_events/new_metrics.yml new file mode 100644 index 00000000000..2a207ee84f4 --- /dev/null +++ b/spec/fixtures/scripts/internal_events/new_metrics.yml @@ -0,0 +1,196 @@ +- description: Create a weekly/monthly metric for a single event + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "1\n" # Enum-select: Single event -- count occurrences of a specific event or user interaction + - 'internal_events_cli_used' # Filters to this event + - "\n" # Select: config/events/internal_events_cli_used.yml + - "\n" # Select: Weekly count of unique users + - "who defined an internal event using the CLI\n" # Input description + - "\n" # Submit weekly description for monthly + - "1\n" # Enum-select: Copy & continue + - "y\n" # Create file + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: config/metrics/counts_28d/count_distinct_user_id_from_internal_events_cli_used_monthly.yml + content: spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml + - path: config/metrics/counts_7d/count_distinct_user_id_from_internal_events_cli_used_weekly.yml + content: spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml + +- description: Create a weekly/monthly metric for a multiple events, but select only one event + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "2\n" # Enum-select: Multiple events -- count occurrences of several separate events or interactions + - 'internal_events_cli_used' # Filters to this event + - " " # Multi-select: config/events/internal_events_cli_used.yml + - "\n" # Submit selections + - "\n" # Select: Weekly count of unique projects + - "who defined an internal event using the CLI\n" # Input description + - "\n" # Submit weekly description for monthly + - "1\n" # Enum-select: Copy & continue + - "y\n" # Create file + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: config/metrics/counts_28d/count_distinct_user_id_from_internal_events_cli_used_monthly.yml + content: spec/fixtures/scripts/internal_events/metrics/user_id_28d_single_event.yml + - path: config/metrics/counts_7d/count_distinct_user_id_from_internal_events_cli_used_weekly.yml + content: spec/fixtures/scripts/internal_events/metrics/user_id_7d_single_event.yml + +- description: Create a weekly/monthly metric for multiple events + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + - path: config/events/internal_events_cli_closed.yml + content: spec/fixtures/scripts/internal_events/events/secondary_event_with_identifiers.yml + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "2\n" # Enum-select: Multiple events -- count occurrences of several separate events or interactions + - 'internal_events_cli' # Filters to the relevant events + - ' ' # Multi-select: internal_events_cli_closed + - "\e[B" # Arrow down to: internal_events_cli_used + - ' ' # Multi-select: internal_events_cli_used + - "\n" # Submit selections + - "\e[B" # Arrow down to: Weekly count of unique projects + - "\n" # Select: Weekly count of unique projects + - "where a defition file was created with the CLI\n" # Input description + - "\n" # Submit weekly description for monthly + - "1\n" # Select: Copy & continue + - "y\n" # Create file + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: config/metrics/counts_28d/count_distinct_project_id_from_internal_events_cli_closed_and_internal_events_cli_used_monthly.yml + content: spec/fixtures/scripts/internal_events/metrics/project_id_28d_multiple_events.yml + - path: config/metrics/counts_7d/count_distinct_project_id_from_internal_events_cli_closed_and_internal_events_cli_used_weekly.yml + content: spec/fixtures/scripts/internal_events/metrics/project_id_7d_multiple_events.yml + +- description: Create an all time total metric for a single event + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "1\n" # Enum-select: Single event -- count occurrences of a specific event or user interaction + - 'internal_events_cli_used' # Filters to this event + - "\n" # Select: config/events/internal_events_cli_used.yml + - "\e[A" # Arrow up to: Total count of events + - "\n" # Select: Total count of events + - "when an event was defined using the CLI\n" # Input description + - "1\n" # Select: Copy & continue + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/total_single_event.yml + +- description: Try to create a database metric + inputs: + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "3\n" # Enum-select: Database -- record value of a particular field or count of database rows + +- description: Create an all time total metric for a single event, and confirm each attribute copied from event + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "1\n" # Enum-select: Single event -- count occurrences of a specific event or user interaction + - 'internal_events_cli_used' # Filters to this event + - "\n" # Select: config/events/internal_events_cli_used.yml + - "\e[A" # Arrow up to: Total count of events + - "\n" # Select: Total count of events + - "when an event was defined using the CLI\n" # Input description + - "2\n" # Enum-select: Modify attributes + - "\n" # Accept group/section/stage from event definition + - "\n" # Accept URL from event definition + - "2\n" # Override tier -> Select: [premium, ultimate] + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: ee/config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/ee_total_single_event.yml + +- description: Create a metric after helping the user figure out next steps + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + keystrokes: + - "4\n" # Enum-select: ...am I in the right place? + - "y\n" # Yes --> Are you trying to track customer usage of a GitLab feature? + - "y\n" # Yes --> Can usage for the feature be measured by tracking a specific user action? + - "y\n" # Yes --> Is the event already tracked? + - "y\n" # Yes --> Ready to start? + - "1\n" # Enum-select: Single event -- count occurrences of a specific event or user interaction + - 'internal_events_cli_used' # Filters to this event + - "\n" # Select: config/events/internal_events_cli_used.yml + - "\e[A" # Arrow up to: Total count of events + - "\n" # Select: Total count of events + - "when an event was defined using the CLI\n" # Input description + - "1\n" # Select: Copy & continue + - "y\n" # Create file + - "2\n" # Exit + outputs: + files: + - path: config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/total_single_event.yml + +- description: User overwrites metric that already exists + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + - path: config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml # wrong content + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "1\n" # Enum-select: Single event -- count occurrences of a specific event or user interaction + - 'internal_events_cli_used' # Filters to this event + - "\n" # Select: config/events/internal_events_cli_used.yml + - "\e[A" # Arrow up to: Total count of events + - "\n" # Select: Total count of events + - "when an event was defined using the CLI\n" # Input description + - "1\n" # Select: Copy & continue + - "y\n" # Overwrite file + - "2\n" # Exit + outputs: + files: + - path: config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/total_single_event.yml + +- description: User opts not to overwrite metric that already exists + inputs: + files: + - path: config/events/internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/events/event_with_identifiers.yml + - path: config/metrics/counts_all/count_total_internal_events_cli_used.yml + content: spec/fixtures/scripts/internal_events/metrics/ee_total_7d_single_event.yml # wrong content + keystrokes: + - "2\n" # Enum-select: New Metric -- calculate how often one or more existing events occur over time + - "1\n" # Enum-select: Single event -- count occurrences of a specific event or user interaction + - 'internal_events_cli_used' # Filters to this event + - "\n" # Select: config/events/internal_events_cli_used.yml + - "\e[A" # Arrow up to: Total count of events + - "\n" # Select: Total count of events + - "when an event was defined using the CLI\n" # Input description + - "1\n" # Select: Copy & continue + - "n\n" # Don't overwrite file + - "2\n" # Exit diff --git a/spec/fixtures/scripts/internal_events/stages.yml b/spec/fixtures/scripts/internal_events/stages.yml new file mode 100644 index 00000000000..d5db9dcbe6d --- /dev/null +++ b/spec/fixtures/scripts/internal_events/stages.yml @@ -0,0 +1,78 @@ +stages: + manage: + display_name: "Manage" + section: core_platform + groups: + import_and_integrate: + name: Import and Integrate + foundations: + name: Foundations + + plan: + display_name: "Plan" + section: dev + groups: + project_management: + name: Project Management + product_planning: + name: Product Planning + knowledge: + name: Knowledge + optimize: + name: Optimize + + create: + display_name: "Create" + section: dev + slack: + channel: s_create + groups: + source_code: + name: Source Code + code_review: + name: Code Review + ide: + name: IDE + editor_extensions: + name: Editor Extensions + code_creation: + name: Code Creation + + verify: + display_name: "Verify" + section: ci + slack: + channel: s_verify + groups: + pipeline_execution: + name: "Pipeline Execution" + pipeline_authoring: + name: "Pipeline Authoring" + runner: + name: "Runner" + runner_saas: + name: "Runner SaaS" + pipeline_security: + name: "Pipeline Security" + + package: + display_name: "Package" + section: ci + slack: + channel: s_package + groups: + package_registry: + name: Package Registry + container_registry: + name: Container Registry + + monitor: + display_name: Monitor + section: analytics + groups: + analytics_instrumentation: + name: Analytics Instrumentation + product_analytics: + name: Product Analytics + observability: + name: "Observability" |