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
bab8d02a
Commit
bab8d02a
authored
Mar 08, 2018
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into ce-to-ee-2018-03-08
parents
d020e657
bd30d0b5
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
121 additions
and
105 deletions
+121
-105
app/assets/javascripts/vue_merge_request_widget/components/memory_usage.vue
...ipts/vue_merge_request_widget/components/memory_usage.vue
+47
-40
app/assets/javascripts/vue_merge_request_widget/components/mr_widget_deployment.js
...e_merge_request_widget/components/mr_widget_deployment.js
+4
-4
app/assets/javascripts/vue_shared/components/memory_graph.vue
...assets/javascripts/vue_shared/components/memory_graph.vue
+27
-11
app/services/projects/update_service.rb
app/services/projects/update_service.rb
+1
-1
app/views/shared/milestones/_milestone.html.haml
app/views/shared/milestones/_milestone.html.haml
+10
-10
changelogs/unreleased/refactor-move-mr-widget-memory-usage-and-graph-components.yml
...ctor-move-mr-widget-memory-usage-and-graph-components.yml
+5
-0
doc/development/i18n/externalization.md
doc/development/i18n/externalization.md
+1
-1
spec/features/milestone_spec.rb
spec/features/milestone_spec.rb
+11
-0
spec/javascripts/vue_mr_widget/components/mr_widget_memory_usage_spec.js
...s/vue_mr_widget/components/mr_widget_memory_usage_spec.js
+3
-15
spec/javascripts/vue_shared/components/memory_graph_spec.js
spec/javascripts/vue_shared/components/memory_graph_spec.js
+3
-23
spec/services/projects/update_service_spec.rb
spec/services/projects/update_service_spec.rb
+9
-0
No files found.
app/assets/javascripts/vue_merge_request_widget/components/m
r_widget_memory_usage.js
→
app/assets/javascripts/vue_merge_request_widget/components/m
emory_usage.vue
View file @
bab8d02a
<
script
>
import
statusCodes
from
'
../../lib/utils/http_status
'
;
import
{
bytesToMiB
}
from
'
../../lib/utils/number_utils
'
;
import
{
backOff
}
from
'
../../lib/utils/common_utils
'
;
import
MemoryGraph
from
'
../../vue_shared/components/memory_graph
'
;
import
MemoryGraph
from
'
../../vue_shared/components/memory_graph
.vue
'
;
import
MRWidgetService
from
'
../services/mr_widget_service
'
;
export
default
{
name
:
'
MemoryUsage
'
,
components
:
{
MemoryGraph
,
},
props
:
{
metricsUrl
:
{
type
:
String
,
...
...
@@ -28,9 +32,6 @@ export default {
backOffRequestCounter
:
0
,
};
},
components
:
{
'
mr-memory-graph
'
:
MemoryGraph
,
},
computed
:
{
shouldShowLoading
()
{
return
this
.
loadingMetrics
&&
!
this
.
hasMetrics
&&
!
this
.
loadFailed
;
...
...
@@ -57,6 +58,10 @@ export default {
return
'
unchanged
'
;
},
},
mounted
()
{
this
.
loadingMetrics
=
true
;
this
.
loadMetrics
();
},
methods
:
{
getMegabytes
(
bytesString
)
{
const
valueInBytes
=
Number
(
bytesString
).
toFixed
(
2
);
...
...
@@ -114,23 +119,25 @@ export default {
});
},
},
mounted
()
{
this
.
loadingMetrics
=
true
;
this
.
loadMetrics
();
},
template
:
`
};
</
script
>
<
template
>
<div
class=
"mr-info-list clearfix mr-memory-usage js-mr-memory-usage"
>
<p
v-if=
"shouldShowLoading"
class=
"usage-info js-usage-info usage-info-loading"
>
<i
class=
"fa fa-spinner fa-spin usage-info-load-spinner"
aria-hidden="true" />Loading deployment statistics
aria-hidden=
"true"
>
</i>
Loading deployment statistics
</p>
<p
v-if=
"shouldShowMemoryGraph"
class=
"usage-info js-usage-info"
>
<a :href="metricsMonitoringUrl">Memory</a> usage <b>{{memoryChangeType}}</b> from {{memoryFrom}}MB to {{memoryTo}}MB
<a
:href=
"metricsMonitoringUrl"
>
Memory
</a>
usage
<b>
{{
memoryChangeType
}}
</b>
from
{{
memoryFrom
}}
MB to
{{
memoryTo
}}
MB
</p>
<p
v-if=
"shouldShowLoadFailure"
...
...
@@ -142,12 +149,12 @@ export default {
class=
"usage-info js-usage-info usage-info-unavailable"
>
Deployment statistics are not available currently
</p>
<mr-
memory-graph
<
memory-graph
v-if=
"shouldShowMemoryGraph"
:metrics=
"memoryMetrics"
:deploymentT
ime="deploymentTime"
:deployment-t
ime=
"deploymentTime"
height=
"25"
width="100" />
width=
"100"
/>
</div>
`
,
};
</
template
>
app/assets/javascripts/vue_merge_request_widget/components/mr_widget_deployment.js
View file @
bab8d02a
import
{
getTimeago
}
from
'
~/lib/utils/datetime_utility
'
;
import
{
visitUrl
}
from
'
../../lib/utils/url_utility
'
;
import
Flash
from
'
../../flash
'
;
import
MemoryUsage
from
'
./m
r_widget_memory_usag
e
'
;
import
MemoryUsage
from
'
./m
emory_usage.vu
e
'
;
import
StatusIcon
from
'
./mr_widget_status_icon.vue
'
;
import
MRWidgetService
from
'
../services/mr_widget_service
'
;
...
...
@@ -12,8 +12,8 @@ export default {
service
:
{
type
:
Object
,
required
:
true
},
},
components
:
{
'
mr-widget-memory-usage
'
:
MemoryUsage
,
'
status-icon
'
:
StatusIcon
,
MemoryUsage
,
StatusIcon
,
},
methods
:
{
formatDate
(
date
)
{
...
...
@@ -100,7 +100,7 @@ export default {
class="btn btn-default btn-xs">
Stop environment
</button>
<m
r-widget-m
emory-usage
<memory-usage
v-if="deployment.metrics_url"
:metrics-url="deployment.metrics_url"
:metrics-monitoring-url="deployment.metrics_monitoring_url"
...
...
app/assets/javascripts/vue_shared/components/memory_graph.
js
→
app/assets/javascripts/vue_shared/components/memory_graph.
vue
View file @
bab8d02a
<
script
>
import
{
getTimeago
}
from
'
../../lib/utils/datetime_utility
'
;
export
default
{
...
...
@@ -22,6 +23,9 @@ export default {
return
`Deployed
${
deployedSince
}
`
;
},
},
mounted
()
{
this
.
renderGraph
(
this
.
deploymentTime
,
this
.
metrics
);
},
methods
:
{
/**
* Returns metric value index in metrics array
...
...
@@ -103,15 +107,27 @@ export default {
this
.
dotY
=
dotY
;
},
},
mounted
()
{
this
.
renderGraph
(
this
.
deploymentTime
,
this
.
metrics
);
},
template
:
`
};
</
script
>
<
template
>
<div
class=
"memory-graph-container"
>
<svg class="has-tooltip" :title="getFormattedMedian" :width="width" :height="height" xmlns="http://www.w3.org/2000/svg">
<path :d="pathD" :viewBox="pathViewBox" />
<circle r="1.5" :cx="dotX" :cy="dotY" tranform="translate(0 -1)" />
<svg
class=
"has-tooltip"
:title=
"getFormattedMedian"
:width=
"width"
:height=
"height"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
:d=
"pathD"
:viewBox=
"pathViewBox"
/>
<circle
r=
"1.5"
:cx=
"dotX"
:cy=
"dotY"
tranform=
"translate(0 -1)"
/>
</svg>
</div>
`
,
};
</
template
>
app/services/projects/update_service.rb
View file @
bab8d02a
...
...
@@ -68,7 +68,7 @@ module Projects
def
enabling_wiki?
return
false
if
@project
.
wiki_enabled?
params
[
:project_feature_attributes
][
:wiki_access_level
]
.
to_i
>
ProjectFeature
::
DISABLED
params
.
dig
(
:project_feature_attributes
,
:wiki_access_level
)
.
to_i
>
ProjectFeature
::
DISABLED
end
def
ensure_wiki_exists
...
...
app/views/shared/milestones/_milestone.html.haml
View file @
bab8d02a
changelogs/unreleased/refactor-move-mr-widget-memory-usage-and-graph-components.yml
0 → 100644
View file @
bab8d02a
---
title
:
Move MemoryGraph and MemoryUsage vue components
merge_request
:
17533
author
:
George Tsiolis
type
:
performance
doc/development/i18n/externalization.md
View file @
bab8d02a
...
...
@@ -45,7 +45,7 @@ We basically have 4 types of files:
1.
Ruby files: basically Models and Controllers.
1.
HAML files: these are the view files.
1.
ERB files: used for email templates.
1.
JavaScript files: we mostly need to work with V
UE JS
templates.
1.
JavaScript files: we mostly need to work with V
ue
templates.
### Ruby files
...
...
spec/features/milestone_spec.rb
View file @
bab8d02a
...
...
@@ -97,4 +97,15 @@ feature 'Milestone' do
end
end
end
feature
'Deleting a milestone'
do
scenario
"The delete milestone button does not show for unauthorized users"
do
create
(
:milestone
,
project:
project
,
title:
8.7
)
sign_out
(
user
)
visit
group_milestones_path
(
group
)
expect
(
page
).
to
have_selector
(
'.js-delete-milestone-button'
,
count:
0
)
end
end
end
spec/javascripts/vue_mr_widget/components/mr_widget_memory_usage_spec.js
View file @
bab8d02a
import
Vue
from
'
vue
'
;
import
memoryUsageComponent
from
'
~/vue_merge_request_widget/components/mr_widget_memory_usag
e
'
;
import
MemoryUsage
from
'
~/vue_merge_request_widget/components/memory_usage.vu
e
'
;
import
MRWidgetService
from
'
~/vue_merge_request_widget/services/mr_widget_service
'
;
const
url
=
'
/root/acets-review-apps/environments/15/deployments/1/metrics
'
;
...
...
@@ -34,7 +34,7 @@ const metricsMockData = {
};
const
createComponent
=
()
=>
{
const
Component
=
Vue
.
extend
(
memoryUsageComponent
);
const
Component
=
Vue
.
extend
(
MemoryUsage
);
return
new
Component
({
el
:
document
.
createElement
(
'
div
'
),
...
...
@@ -67,21 +67,9 @@ describe('MemoryUsage', () => {
el
=
vm
.
$el
;
});
describe
(
'
props
'
,
()
=>
{
it
(
'
should have props with defaults
'
,
()
=>
{
const
{
metricsUrl
}
=
memoryUsageComponent
.
props
;
const
MetricsUrlTypeClass
=
metricsUrl
.
type
;
Vue
.
nextTick
(()
=>
{
expect
(
new
MetricsUrlTypeClass
()
instanceof
String
).
toBeTruthy
();
expect
(
metricsUrl
.
required
).
toBeTruthy
();
});
});
});
describe
(
'
data
'
,
()
=>
{
it
(
'
should have default data
'
,
()
=>
{
const
data
=
memoryUsageComponent
.
data
();
const
data
=
MemoryUsage
.
data
();
expect
(
Array
.
isArray
(
data
.
memoryMetrics
)).
toBeTruthy
();
expect
(
data
.
memoryMetrics
.
length
).
toBe
(
0
);
...
...
spec/javascripts/vue_shared/components/memory_graph_spec.js
View file @
bab8d02a
import
Vue
from
'
vue
'
;
import
memoryGraphComponent
from
'
~/vue_shared/components/memory_graph
'
;
import
MemoryGraph
from
'
~/vue_shared/components/memory_graph.vue
'
;
import
{
mockMetrics
,
mockMedian
,
mockMedianIndex
}
from
'
./mock_data
'
;
const
defaultHeight
=
'
25
'
;
const
defaultWidth
=
'
100
'
;
const
createComponent
=
()
=>
{
const
Component
=
Vue
.
extend
(
memoryGraphComponent
);
const
Component
=
Vue
.
extend
(
MemoryGraph
);
return
new
Component
({
el
:
document
.
createElement
(
'
div
'
),
...
...
@@ -32,29 +32,9 @@ describe('MemoryGraph', () => {
el
=
vm
.
$el
;
});
describe
(
'
props
'
,
()
=>
{
it
(
'
should have props with defaults
'
,
(
done
)
=>
{
const
{
metrics
,
deploymentTime
,
width
,
height
}
=
memoryGraphComponent
.
props
;
Vue
.
nextTick
(()
=>
{
const
typeClassMatcher
=
(
propItem
,
expectedType
)
=>
{
const
PropItemTypeClass
=
propItem
.
type
;
expect
(
new
PropItemTypeClass
()
instanceof
expectedType
).
toBeTruthy
();
expect
(
propItem
.
required
).
toBeTruthy
();
};
typeClassMatcher
(
metrics
,
Array
);
typeClassMatcher
(
deploymentTime
,
Number
);
typeClassMatcher
(
width
,
String
);
typeClassMatcher
(
height
,
String
);
done
();
});
});
});
describe
(
'
data
'
,
()
=>
{
it
(
'
should have default data
'
,
()
=>
{
const
data
=
memoryGraphComponent
.
data
();
const
data
=
MemoryGraph
.
data
();
const
dataValidator
=
(
dataItem
,
expectedType
,
defaultVal
)
=>
{
expect
(
typeof
dataItem
).
toBe
(
expectedType
);
expect
(
dataItem
).
toBe
(
defaultVal
);
...
...
spec/services/projects/update_service_spec.rb
View file @
bab8d02a
...
...
@@ -133,6 +133,15 @@ describe Projects::UpdateService, '#execute' do
expect
(
result
).
to
eq
({
status: :success
})
expect
(
project
.
wiki_repository_exists?
).
to
be
false
end
it
'handles empty project feature attributes'
do
project
.
project_feature
.
update
(
wiki_access_level:
ProjectFeature
::
DISABLED
)
result
=
update_project
(
project
,
user
,
{
name:
'test1'
})
expect
(
result
).
to
eq
({
status: :success
})
expect
(
project
.
wiki_repository_exists?
).
to
be
false
end
end
context
'when enabling a wiki'
do
...
...
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