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
309c9841
Commit
309c9841
authored
Dec 05, 2017
by
Mike Greiling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
process mocked performance data responses from mr_widget_service class
parent
4238ef34
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
98 additions
and
21 deletions
+98
-21
ee/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
...ts/vue_merge_request_widget/services/mr_widget_service.js
+48
-2
ee/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js
...cripts/vue_merge_request_widget/stores/mr_widget_store.js
+50
-19
No files found.
ee/app/assets/javascripts/vue_merge_request_widget/services/mr_widget_service.js
View file @
309c9841
...
...
@@ -36,8 +36,54 @@ export default class MRWidgetService extends CEWidgetService {
}
fetchReport
(
endpoint
)
{
// eslint-disable-line
if
(
endpoint
===
'
/performance_head
'
||
endpoint
===
'
/performance_base
'
)
{
return
Promise
.
resolve
([]);
if
(
endpoint
===
'
/performance_head
'
)
{
return
new
Promise
((
resolve
)
=>
{
setTimeout
(
resolve
,
1000
,
[
{
subject
:
'
/some/path
'
,
metrics
:
[
{
name
:
'
Sitespeed Score
'
,
value
:
85
,
},
],
},
{
subject
:
'
/some/other/path
'
,
metrics
:
[
{
name
:
'
Sitespeed Score
'
,
value
:
80
,
},
],
},
]);
});
}
if
(
endpoint
===
'
/performance_base
'
)
{
return
new
Promise
((
resolve
)
=>
{
setTimeout
(
resolve
,
1000
,
[
{
subject
:
'
/some/path
'
,
metrics
:
[
{
name
:
'
Sitespeed Score
'
,
value
:
84
,
},
],
},
{
subject
:
'
/some/other/path
'
,
metrics
:
[
{
name
:
'
Sitespeed Score
'
,
value
:
80
,
},
],
},
]);
});
}
return
Vue
.
http
.
get
(
endpoint
).
then
(
res
=>
res
.
json
());
...
...
ee/app/assets/javascripts/vue_merge_request_widget/stores/mr_widget_store.js
View file @
309c9841
...
...
@@ -97,25 +97,42 @@ export default class MergeRequestStore extends CEMergeRequestStore {
}
comparePerformanceMetrics
(
headMetrics
,
baseMetrics
)
{
// eslint-disable-next-line
console
.
log
(
headMetrics
,
baseMetrics
);
this
.
performanceMetrics
.
improved
=
[
{
name
:
'
Overall Score
'
,
score
:
50
,
delta
:
0
,
path
:
'
/foo/bar
'
,
},
];
this
.
performanceMetrics
.
degraded
=
[
{
name
:
'
Overall Score
'
,
score
:
53
,
delta
:
-
1
,
path
:
'
/foo/bar/bin
'
,
},
];
const
headMetricsIndexed
=
MergeRequestStore
.
normalizePerformanceMetrics
(
headMetrics
);
const
baseMetricsIndexed
=
MergeRequestStore
.
normalizePerformanceMetrics
(
baseMetrics
);
const
improved
=
[];
const
degraded
=
[];
Object
.
keys
(
headMetricsIndexed
).
forEach
((
subject
)
=>
{
const
subjectMetrics
=
headMetricsIndexed
[
subject
];
Object
.
keys
(
subjectMetrics
).
forEach
((
metric
)
=>
{
const
headMetricData
=
subjectMetrics
[
metric
];
if
(
baseMetricsIndexed
[
subject
]
&&
baseMetricsIndexed
[
subject
][
metric
])
{
const
baseMetricData
=
baseMetricsIndexed
[
subject
][
metric
];
const
metricData
=
{
name
:
metric
,
path
:
subject
,
score
:
headMetricData
.
value
,
delta
:
headMetricData
.
value
-
baseMetricData
.
value
,
};
if
(
headMetricData
.
value
>=
baseMetricData
.
value
)
{
improved
.
push
(
metricData
);
}
else
{
degraded
.
push
(
metricData
);
}
}
else
{
improved
.
push
({
name
:
metric
,
path
:
subject
,
score
:
headMetricData
.
value
,
});
}
});
});
this
.
performanceMetrics
=
{
improved
,
degraded
};
}
/**
...
...
@@ -175,4 +192,18 @@ export default class MergeRequestStore extends CEMergeRequestStore {
static
filterByFingerprint
(
firstArray
,
secondArray
)
{
return
firstArray
.
filter
(
item
=>
!
secondArray
.
find
(
el
=>
el
.
fingerprint
===
item
.
fingerprint
));
}
// normalize performance metrics by indexing on performance subject and metric name
static
normalizePerformanceMetrics
(
performanceData
)
{
const
indexedSubjects
=
{};
performanceData
.
forEach
(({
subject
,
metrics
})
=>
{
const
indexedMetrics
=
{};
metrics
.
forEach
(({
name
,
...
data
})
=>
{
indexedMetrics
[
name
]
=
data
;
});
indexedSubjects
[
subject
]
=
indexedMetrics
;
});
return
indexedSubjects
;
}
}
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