Skip to content

Commit dc3f91f

Browse files
Merge pull request #80 from hmrc/BDOG-302
BDOG-302 added jdk vendor information
2 parents 2c3e076 + 787bc06 commit dc3f91f

File tree

5 files changed

+93
-17
lines changed

5 files changed

+93
-17
lines changed

app/uk/gov/hmrc/cataloguefrontend/connector/model/JDKVersion.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@ package uk.gov.hmrc.cataloguefrontend.connector.model
1919
import play.api.libs.json.{OFormat, __}
2020
import play.api.libs.functional.syntax._
2121

22-
case class JDKVersion(name:String, version: String)
22+
case class JDKVersion(name:String, version: String, vendor: String, kind: String)
2323

2424
trait JDKVersionFormats {
2525

2626
val jdkFormat: OFormat[JDKVersion] =
2727
(
28-
(__ \ "name" ).format[String]
29-
~ (__ \ "jdkVersion" ).format[String]
28+
(__ \ "name" ).format[String]
29+
~ (__ \ "version" ).format[String]
30+
~ (__ \ "vendor" ).format[String]
31+
~ (__ \ "kind" ).format[String]
3032
)(JDKVersion.apply, unlift(JDKVersion.unapply))
3133
}
3234

app/views/JdkVersionPage.scala.html

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,17 @@ <h1 id="jdk-header">JDK Versions: @selected.asString</h1>
3636
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
3737
</header>
3838

39-
<div id="chart_div"></div>
39+
<div class="row">
40+
<div class="col-sm-6" >
41+
<h4>Versions</h4>
42+
<div id="chart_div"></div>
43+
</div>
44+
<div class="col-sm-6" >
45+
<h4>Vendors</h4>
46+
<div id="chart_vendor_div"></div>
47+
</div>
48+
</div>
49+
4050
<hr>
4151
<div>
4252
<form class="form-inline">
@@ -55,6 +65,7 @@ <h1 id="jdk-header">JDK Versions: @selected.asString</h1>
5565
<thead>
5666
<tr>
5767
<th>Service</th>
68+
<th>JDK Vendor</th>
5869
<th>JDK Version</th>
5970
</tr>
6071
</thead>
@@ -67,7 +78,14 @@ <h1 id="jdk-header">JDK Versions: @selected.asString</h1>
6778

6879
<script type="text/javascript">
6980
google.charts.load('current', {'packages': ['corechart']});
70-
google.charts.setOnLoadCallback(drawChart);
81+
google.charts.setOnLoadCallback(drawAll);
82+
83+
function drawAll() {
84+
drawChart();
85+
drawVendorChart()
86+
}
87+
88+
// draw jdk version chart
7189
function drawChart() {
7290

7391
var data = new google.visualization.DataTable();
@@ -79,21 +97,48 @@ <h1 id="jdk-header">JDK Versions: @selected.asString</h1>
7997
}
8098
].sort());
8199

82-
var options = { 'title' : 'JDK Usage',
83-
'width' : "80%",
100+
var options = {
101+
'width' : "40%",
84102
'height' : 200,
85-
'chartArea': { 'width': '100%',
86-
'height': '100%'}};
103+
'chartArea': {
104+
'width': '100%',
105+
'height': '95%'
106+
}
107+
};
87108
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
88109
chart.draw(data, options);
89110
}
90111

112+
function drawVendorChart() {
113+
var data = new google.visualization.DataTable();
114+
data.addColumn('string', 'Version');
115+
data.addColumn('number', 'Count');
116+
data.addRows([
117+
@for(r <- jdkVersions.groupBy(_.vendor).mapValues(_.length)) {
118+
['@r._1', @r._2],
119+
}
120+
].sort());
121+
122+
var options = {
123+
'width' : "40%",
124+
'height' : 200,
125+
'chartArea': {
126+
'width': '100%',
127+
'height': '95%'
128+
}
129+
};
130+
var chart = new google.visualization.PieChart(document.getElementById('chart_vendor_div'));
131+
chart.draw(data, options);
132+
}
133+
134+
91135
</script>
92136
}
93137

94138
@jdkVersion(version: JDKVersion) = {
95139
<tr id="jdk-slug-@version.name">
96140
<td><a href="@routes.CatalogueController.repository(version.name)">@version.name</a></td>
141+
<td>@version.vendor</td>
97142
<td>@version.version</td>
98143
</tr>
99144
}

test/uk/gov/hmrc/cataloguefrontend/connector/ServiceDependenciesConnectorSpec.scala

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,32 @@ class ServiceDependenciesConnectorSpec
322322
}
323323
}
324324

325+
"getJDKVersions" - {
326+
"returns JDK versions with vendor" in new Setup {
327+
serviceEndpoint(
328+
GET,
329+
s"/api/jdkVersions?flag=${SlugInfoFlag.Production.asString}",
330+
willRespondWith = (
331+
200,
332+
Some(
333+
"""[
334+
| {"name":"something-api", "version":"1.8.0_181", "vendor": "Oracle", "kind": "JDK"}
335+
|,{"name":"service-backend","version":"1.8.0_191", "vendor": "OpenJDK", "kind": "JRE"}
336+
|]""".stripMargin)))
337+
338+
val response = serviceDependenciesConnector.getJDKVersions(SlugInfoFlag.Production).futureValue
339+
340+
response.head.name shouldBe "something-api"
341+
response.head.version shouldBe "1.8.0_181"
342+
response.head.vendor shouldBe "Oracle"
343+
344+
response(1).name shouldBe "service-backend"
345+
response(1).version shouldBe "1.8.0_191"
346+
response(1).vendor shouldBe "OpenJDK"
347+
348+
}
349+
}
350+
325351
private trait Setup {
326352
implicit val headerCarrier: HeaderCarrier = HeaderCarrier()
327353
}

test/uk/gov/hmrc/cataloguefrontend/service/DependenciesServiceSpec.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,10 @@ class SlugInfoServiceSpec
8585

8686
when(boot.mockedServiceDependenciesConnector.getJDKVersions(SlugInfoFlag.Latest))
8787
.thenReturn(Future(List(
88-
JDKVersion("test1", "1.181.1"),
89-
JDKVersion("test2", "1.181.1"),
90-
JDKVersion("test3", "1.191.1"),
91-
JDKVersion("test4", "1.121.1"))))
88+
JDKVersion(name = "test1", version = "1.181.1", vendor = "Oracle", kind = "JDK"),
89+
JDKVersion(name = "test2", version = "1.181.1", vendor = "Oracle", kind = "JDK"),
90+
JDKVersion(name = "test3", version = "1.191.1", vendor = "OpenJDK", kind = "JRE"),
91+
JDKVersion(name = "test4", version = "1.121.1", vendor = "OpenJDK", kind = "JRE"))))
9292

9393
await(boot.service.getJDKCountsForEnv(SlugInfoFlag.Latest)) shouldBe JDKUsageByEnv(SlugInfoFlag.Latest.asString, Map("1.181.1"-> 2, "1.191.1"->1, "1.121.1" -> 1))
9494
}

test/view/JDKVersionPageSpec.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,25 @@ class JDKVersionPageSpec extends WordSpec with MockitoSugar with Matchers {
3636
"show a list of slugs and what JDK they're using" in {
3737
implicit val request = FakeRequest()
3838

39-
val versions = List(JDKVersion("test-slug", "1.181.0"), JDKVersion("thing-service", "1.171.0"))
39+
val versions = List(
40+
JDKVersion(name = "test-slug", version = "1.181.0", vendor = "OpenJDK", kind = "JDK")
41+
, JDKVersion(name = "thing-service", version = "1.171.0", vendor = "Oracle", kind = "JRE" ))
42+
4043
val document = asDocument(new JdkVersionPage(msg)(versions, SlugInfoFlag.values, Latest))
4144

4245
val slug1 = document.select("#jdk-slug-test-slug")
4346
val slug2 = document.select("#jdk-slug-thing-service")
4447

45-
slug1.select("#jdk-slug-test-slug").text() shouldBe "test-slug 1.181.0"
46-
slug2.select("#jdk-slug-thing-service").text() shouldBe "thing-service 1.171.0"
48+
slug1.select("#jdk-slug-test-slug").text() shouldBe "test-slug OpenJDK 1.181.0"
49+
slug2.select("#jdk-slug-thing-service").text() shouldBe "thing-service Oracle 1.171.0"
4750

4851
}
4952

5053

5154
"include a link to the repository" in {
5255
implicit val request = FakeRequest()
5356

54-
val versions = List(JDKVersion("thing-service", "1.171.0"))
57+
val versions = List(JDKVersion(name= "thing-service", version = "1.171.0", vendor = "Oracle", kind = "JDK"))
5558
val document = asDocument(new JdkVersionPage(msg)(versions, SlugInfoFlag.values, Latest))
5659

5760
val slug = document.select("#jdk-slug-thing-service")

0 commit comments

Comments
 (0)