BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
e2ff9406
Commit
e2ff9406
authored
Apr 24, 2017
by
Kamil Trzciński
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/gb/fix-blocked-pipeline-duration' into 'master'
Fix missing duration for blocked pipelines Closes #31264 See merge request !10856
parents
0affdb85
103684b7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
20 deletions
+53
-20
pipeline.rb
app/models/ci/pipeline.rb
+4
-0
fix-gb-fix-blocked-pipeline-duration.yml
...elogs/unreleased/fix-gb-fix-blocked-pipeline-duration.yml
+4
-0
pipeline_spec.rb
spec/models/ci/pipeline_spec.rb
+45
-20
No files found.
app/models/ci/pipeline.rb
View file @
e2ff9406
...
...
@@ -75,6 +75,10 @@ module Ci
pipeline
.
update_duration
end
before_transition
any
=>
[
:manual
]
do
|
pipeline
|
pipeline
.
update_duration
end
before_transition
canceled:
any
-
[
:canceled
]
do
|
pipeline
|
pipeline
.
auto_canceled_by
=
nil
end
...
...
changelogs/unreleased/fix-gb-fix-blocked-pipeline-duration.yml
0 → 100644
View file @
e2ff9406
---
title
:
Fix missing duration for blocked pipelines
merge_request
:
10856
author
:
spec/models/ci/pipeline_spec.rb
View file @
e2ff9406
...
...
@@ -296,32 +296,56 @@ describe Ci::Pipeline, models: true do
describe
'state machine'
do
let
(
:current
)
{
Time
.
now
.
change
(
usec:
0
)
}
let
(
:build
)
{
create_build
(
'build1'
,
0
)
}
let
(
:build_b
)
{
create_build
(
'build2'
,
0
)
}
let
(
:build_c
)
{
create_build
(
'build3'
,
0
)
}
let
(
:build
)
{
create_build
(
'build1'
,
queued_at:
0
)
}
let
(
:build_b
)
{
create_build
(
'build2'
,
queued_at:
0
)
}
let
(
:build_c
)
{
create_build
(
'build3'
,
queued_at:
0
)
}
describe
'#duration'
do
before
do
travel_to
(
current
+
30
)
do
build
.
run!
build
.
success!
build_b
.
run!
build_c
.
run!
end
context
'when multiple builds are finished'
do
before
do
travel_to
(
current
+
30
)
do
build
.
run!
build
.
success!
build_b
.
run!
build_c
.
run!
end
travel_to
(
current
+
40
)
do
build_b
.
drop!
travel_to
(
current
+
40
)
do
build_b
.
drop!
end
travel_to
(
current
+
70
)
do
build_c
.
success!
end
end
travel_to
(
current
+
70
)
do
build_c
.
success!
it
'matches sum of builds duration'
do
pipeline
.
reload
expect
(
pipeline
.
duration
).
to
eq
(
40
)
end
end
it
'matches sum of builds duration'
do
pipeline
.
reload
context
'when pipeline becomes blocked'
do
let!
(
:build
)
{
create_build
(
'build:1'
)
}
let!
(
:action
)
{
create_build
(
'manual:action'
,
:manual
)
}
expect
(
pipeline
.
duration
).
to
eq
(
40
)
before
do
travel_to
(
current
+
1
.
minute
)
do
build
.
run!
end
travel_to
(
current
+
5
.
minutes
)
do
build
.
success!
end
end
it
'recalculates pipeline duration'
do
pipeline
.
reload
expect
(
pipeline
).
to
be_manual
expect
(
pipeline
.
duration
).
to
eq
4
.
minutes
end
end
end
...
...
@@ -383,12 +407,13 @@ describe Ci::Pipeline, models: true do
end
end
def
create_build
(
name
,
queued_at
=
current
,
started_from
=
0
)
create
(
:ci_build
,
def
create_build
(
name
,
*
traits
,
queued_at:
current
,
started_from:
0
,
**
opts
)
create
(
:ci_build
,
*
traits
,
name:
name
,
pipeline:
pipeline
,
queued_at:
queued_at
,
started_at:
queued_at
+
started_from
)
started_at:
queued_at
+
started_from
,
**
opts
)
end
end
...
...
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