Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
41070c6e
Commit
41070c6e
authored
May 08, 2020
by
David Fernandez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move container_expiration_policies_usage to counts
parent
10e35363
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
84 additions
and
81 deletions
+84
-81
lib/gitlab/usage_data.rb
lib/gitlab/usage_data.rb
+26
-25
spec/lib/gitlab/usage_data_spec.rb
spec/lib/gitlab/usage_data_spec.rb
+40
-37
spec/support/helpers/usage_data_helpers.rb
spec/support/helpers/usage_data_helpers.rb
+18
-19
No files found.
lib/gitlab/usage_data.rb
View file @
41070c6e
...
@@ -141,7 +141,8 @@ module Gitlab
...
@@ -141,7 +141,8 @@ module Gitlab
services_usage
,
services_usage
,
usage_counters
,
usage_counters
,
user_preferences_usage
,
user_preferences_usage
,
ingress_modsecurity_usage
ingress_modsecurity_usage
,
container_expiration_policies_usage
)
)
}
}
end
end
...
@@ -182,31 +183,8 @@ module Gitlab
...
@@ -182,31 +183,8 @@ module Gitlab
web_ide_clientside_preview_enabled:
alt_usage_data
{
Gitlab
::
CurrentSettings
.
web_ide_clientside_preview_enabled?
},
web_ide_clientside_preview_enabled:
alt_usage_data
{
Gitlab
::
CurrentSettings
.
web_ide_clientside_preview_enabled?
},
ingress_modsecurity_enabled:
Feature
.
enabled?
(
:ingress_modsecurity
),
ingress_modsecurity_enabled:
Feature
.
enabled?
(
:ingress_modsecurity
),
grafana_link_enabled:
alt_usage_data
{
Gitlab
::
CurrentSettings
.
grafana_enabled?
}
grafana_link_enabled:
alt_usage_data
{
Gitlab
::
CurrentSettings
.
grafana_enabled?
}
}.
merge
(
features_usage_data_container_expiration_policies
)
}
end
# rubocop: disable CodeReuse/ActiveRecord
def
features_usage_data_container_expiration_policies
results
=
{}
start
=
::
Project
.
minimum
(
:id
)
finish
=
::
Project
.
maximum
(
:id
)
results
[
:projects_with_expiration_policy_disabled
]
=
distinct_count
(
::
ContainerExpirationPolicy
.
where
(
enabled:
false
),
:project_id
,
start:
start
,
finish:
finish
)
base
=
::
ContainerExpirationPolicy
.
active
results
[
:projects_with_expiration_policy_enabled
]
=
distinct_count
(
base
,
:project_id
,
start:
start
,
finish:
finish
)
%i[keep_n cadence older_than]
.
each
do
|
option
|
::
ContainerExpirationPolicy
.
public_send
(
"
#{
option
}
_options"
).
keys
.
each
do
|
value
|
# rubocop: disable GitlabSecurity/PublicSend
results
[
"projects_with_expiration_policy_enabled_with_
#{
option
}
_set_to_
#{
value
}
"
.
to_sym
]
=
distinct_count
(
base
.
where
(
option
=>
value
),
:project_id
,
start:
start
,
finish:
finish
)
end
end
results
[
:projects_with_expiration_policy_enabled_with_keep_n_unset
]
=
distinct_count
(
base
.
where
(
keep_n:
nil
),
:project_id
,
start:
start
,
finish:
finish
)
results
[
:projects_with_expiration_policy_enabled_with_older_than_unset
]
=
distinct_count
(
base
.
where
(
older_than:
nil
),
:project_id
,
start:
start
,
finish:
finish
)
results
end
end
# rubocop: enable CodeReuse/ActiveRecord
# @return [Hash<Symbol, Integer>]
# @return [Hash<Symbol, Integer>]
def
usage_counters
def
usage_counters
...
@@ -312,6 +290,29 @@ module Gitlab
...
@@ -312,6 +290,29 @@ module Gitlab
}
}
end
end
# rubocop: disable CodeReuse/ActiveRecord
def
container_expiration_policies_usage
results
=
{}
start
=
::
Project
.
minimum
(
:id
)
finish
=
::
Project
.
maximum
(
:id
)
results
[
:projects_with_expiration_policy_disabled
]
=
distinct_count
(
::
ContainerExpirationPolicy
.
where
(
enabled:
false
),
:project_id
,
start:
start
,
finish:
finish
)
base
=
::
ContainerExpirationPolicy
.
active
results
[
:projects_with_expiration_policy_enabled
]
=
distinct_count
(
base
,
:project_id
,
start:
start
,
finish:
finish
)
%i[keep_n cadence older_than]
.
each
do
|
option
|
::
ContainerExpirationPolicy
.
public_send
(
"
#{
option
}
_options"
).
keys
.
each
do
|
value
|
# rubocop: disable GitlabSecurity/PublicSend
results
[
"projects_with_expiration_policy_enabled_with_
#{
option
}
_set_to_
#{
value
}
"
.
to_sym
]
=
distinct_count
(
base
.
where
(
option
=>
value
),
:project_id
,
start:
start
,
finish:
finish
)
end
end
results
[
:projects_with_expiration_policy_enabled_with_keep_n_unset
]
=
distinct_count
(
base
.
where
(
keep_n:
nil
),
:project_id
,
start:
start
,
finish:
finish
)
results
[
:projects_with_expiration_policy_enabled_with_older_than_unset
]
=
distinct_count
(
base
.
where
(
older_than:
nil
),
:project_id
,
start:
start
,
finish:
finish
)
results
end
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
def
services_usage
def
services_usage
results
=
Service
.
available_services_names
.
without
(
'jira'
).
each_with_object
({})
do
|
service_name
,
response
|
results
=
Service
.
available_services_names
.
without
(
'jira'
).
each_with_object
({})
do
|
service_name
,
response
|
...
...
spec/lib/gitlab/usage_data_spec.rb
View file @
41070c6e
...
@@ -97,6 +97,46 @@ describe Gitlab::UsageData, :aggregate_failures do
...
@@ -97,6 +97,46 @@ describe Gitlab::UsageData, :aggregate_failures do
)
)
end
end
context
'with existing container expiration policies'
do
let_it_be
(
:disabled
)
{
create
(
:container_expiration_policy
,
enabled:
false
)
}
let_it_be
(
:enabled
)
{
create
(
:container_expiration_policy
,
enabled:
true
)
}
%i[keep_n cadence older_than]
.
each
do
|
attribute
|
ContainerExpirationPolicy
.
send
(
"
#{
attribute
}
_options"
).
keys
.
each
do
|
value
|
let_it_be
(
"container_expiration_policy_with_
#{
attribute
}
_set_to_
#{
value
}
"
)
{
create
(
:container_expiration_policy
,
attribute
=>
value
)
}
end
end
let
(
:inactive_policies
)
{
::
ContainerExpirationPolicy
.
where
(
enabled:
false
)
}
let
(
:active_policies
)
{
::
ContainerExpirationPolicy
.
active
}
subject
{
described_class
.
data
[
:counts
]
}
it
'gathers usage data'
do
expect
(
subject
[
:projects_with_expiration_policy_enabled
]).
to
eq
20
expect
(
subject
[
:projects_with_expiration_policy_disabled
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_unset
]).
to
eq
14
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_1
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_5
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_10
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_25
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_50
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_unset
]).
to
eq
16
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_7d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_14d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_30d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_90d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_1d
]).
to
eq
12
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_7d
]).
to
eq
5
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_14d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_1month
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_3month
]).
to
eq
1
end
end
it
'works when queries time out'
do
it
'works when queries time out'
do
allow_any_instance_of
(
ActiveRecord
::
Relation
)
allow_any_instance_of
(
ActiveRecord
::
Relation
)
.
to
receive
(
:count
).
and_raise
(
ActiveRecord
::
StatementInvalid
.
new
(
''
))
.
to
receive
(
:count
).
and_raise
(
ActiveRecord
::
StatementInvalid
.
new
(
''
))
...
@@ -190,43 +230,6 @@ describe Gitlab::UsageData, :aggregate_failures do
...
@@ -190,43 +230,6 @@ describe Gitlab::UsageData, :aggregate_failures do
expect
(
subject
[
:grafana_link_enabled
]).
to
eq
(
false
)
expect
(
subject
[
:grafana_link_enabled
]).
to
eq
(
false
)
end
end
end
end
context
'with existing container expiration policies'
do
let_it_be
(
:disabled
)
{
create
(
:container_expiration_policy
,
enabled:
false
)
}
let_it_be
(
:enabled
)
{
create
(
:container_expiration_policy
,
enabled:
true
)
}
%i[keep_n cadence older_than]
.
each
do
|
attribute
|
ContainerExpirationPolicy
.
send
(
"
#{
attribute
}
_options"
).
keys
.
each
do
|
value
|
let_it_be
(
"container_expiration_policy_with_
#{
attribute
}
_set_to_
#{
value
}
"
)
{
create
(
:container_expiration_policy
,
attribute
=>
value
)
}
end
end
let
(
:inactive_policies
)
{
::
ContainerExpirationPolicy
.
where
(
enabled:
false
)
}
let
(
:active_policies
)
{
::
ContainerExpirationPolicy
.
active
}
it
'gathers usage data'
do
expect
(
subject
[
:projects_with_expiration_policy_enabled
]).
to
eq
16
expect
(
subject
[
:projects_with_expiration_policy_disabled
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_unset
]).
to
eq
10
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_1
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_5
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_10
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_25
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_keep_n_set_to_50
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_unset
]).
to
eq
12
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_7d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_14d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_30d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_older_than_set_to_90d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_1d
]).
to
eq
12
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_7d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_14d
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_1month
]).
to
eq
1
expect
(
subject
[
:projects_with_expiration_policy_enabled_with_cadence_set_to_3month
]).
to
eq
1
end
end
end
end
describe
'#components_usage_data'
do
describe
'#components_usage_data'
do
...
...
spec/support/helpers/usage_data_helpers.rb
View file @
41070c6e
...
@@ -99,6 +99,24 @@ module UsageDataHelpers
...
@@ -99,6 +99,24 @@ module UsageDataHelpers
projects_with_error_tracking_enabled
projects_with_error_tracking_enabled
projects_with_alerts_service_enabled
projects_with_alerts_service_enabled
projects_with_prometheus_alerts
projects_with_prometheus_alerts
projects_with_expiration_policy_enabled
projects_with_expiration_policy_disabled
projects_with_expiration_policy_enabled_with_keep_n_unset
projects_with_expiration_policy_enabled_with_keep_n_set_to_1
projects_with_expiration_policy_enabled_with_keep_n_set_to_5
projects_with_expiration_policy_enabled_with_keep_n_set_to_10
projects_with_expiration_policy_enabled_with_keep_n_set_to_25
projects_with_expiration_policy_enabled_with_keep_n_set_to_50
projects_with_expiration_policy_enabled_with_older_than_unset
projects_with_expiration_policy_enabled_with_older_than_set_to_7d
projects_with_expiration_policy_enabled_with_older_than_set_to_14d
projects_with_expiration_policy_enabled_with_older_than_set_to_30d
projects_with_expiration_policy_enabled_with_older_than_set_to_90d
projects_with_expiration_policy_enabled_with_cadence_set_to_1d
projects_with_expiration_policy_enabled_with_cadence_set_to_7d
projects_with_expiration_policy_enabled_with_cadence_set_to_14d
projects_with_expiration_policy_enabled_with_cadence_set_to_1month
projects_with_expiration_policy_enabled_with_cadence_set_to_3month
pages_domains
pages_domains
protected_branches
protected_branches
releases
releases
...
@@ -137,25 +155,6 @@ module UsageDataHelpers
...
@@ -137,25 +155,6 @@ module UsageDataHelpers
prometheus_metrics_enabled
prometheus_metrics_enabled
web_ide_clientside_preview_enabled
web_ide_clientside_preview_enabled
ingress_modsecurity_enabled
ingress_modsecurity_enabled
projects_with_expiration_policy_disabled
projects_with_expiration_policy_enabled
projects_with_expiration_policy_enabled_with_keep_n_unset
projects_with_expiration_policy_enabled_with_older_than_unset
projects_with_expiration_policy_enabled_with_keep_n_set_to_1
projects_with_expiration_policy_enabled_with_keep_n_set_to_5
projects_with_expiration_policy_enabled_with_keep_n_set_to_10
projects_with_expiration_policy_enabled_with_keep_n_set_to_25
projects_with_expiration_policy_enabled_with_keep_n_set_to_50
projects_with_expiration_policy_enabled_with_keep_n_set_to_100
projects_with_expiration_policy_enabled_with_cadence_set_to_1d
projects_with_expiration_policy_enabled_with_cadence_set_to_7d
projects_with_expiration_policy_enabled_with_cadence_set_to_14d
projects_with_expiration_policy_enabled_with_cadence_set_to_1month
projects_with_expiration_policy_enabled_with_cadence_set_to_3month
projects_with_expiration_policy_enabled_with_older_than_set_to_7d
projects_with_expiration_policy_enabled_with_older_than_set_to_14d
projects_with_expiration_policy_enabled_with_older_than_set_to_30d
projects_with_expiration_policy_enabled_with_older_than_set_to_90d
object_store
object_store
)
.
freeze
)
.
freeze
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment