Skip to content

Commit

Permalink
#614 InfluxDB tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dcoraboeuf committed May 24, 2018
1 parent ab22865 commit f5f76e3
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 4 deletions.
2 changes: 2 additions & 0 deletions build.gradle
Expand Up @@ -226,6 +226,8 @@ configure(coreProjects) {
dependency "io.micrometer:micrometer-spring-legacy:${micrometerVersion}"
dependency "io.micrometer:micrometer-registry-influx:${micrometerVersion}"
dependency "io.micrometer:micrometer-registry-prometheus:${micrometerVersion}"
// InfluxDB
dependency 'org.influxdb:influxdb-java:2.10'
// Overrides from Spring Boot
dependency 'com.fasterxml.jackson.module:jackson-module-kotlin:2.9.5'
dependency 'org.postgresql:postgresql:9.4.1208'
Expand Down
2 changes: 2 additions & 0 deletions ontrack-acceptance/build.gradle
Expand Up @@ -22,6 +22,8 @@ dependencies {
testCompile 'org.codehaus.groovy:groovy-all'
testCompile 'org.springframework.boot:spring-boot-starter'

testCompile 'org.influxdb:influxdb-java'

testCompile "org.seleniumhq.selenium:selenium-java:${seleniumVersion}"
testCompile "org.seleniumhq.selenium:selenium-support:${seleniumVersion}"
}
Expand Down
8 changes: 8 additions & 0 deletions ontrack-acceptance/src/main/compose/docker-compose.yml
Expand Up @@ -7,16 +7,23 @@ services:
POSTGRES_DB : ontrack
POSTGRES_USER : ontrack
POSTGRES_PASSWORD: ontrack
influxdb:
image: influxdb:1.5.3
ontrack:
image: "docker.nemerosa.net/nemerosa/ontrack:${ONTRACK_VERSION:-latest}"
depends_on:
postgres:
condition: service_started
influxdb:
condition: service_started
environment:
PROFILE: acceptance
ONTRACK_CONFIG_CONFIGURATION_TEST: "false"
JAVA_OPTIONS: "-Xmx2048m -Xms2048m"
SPRING_DATASOURCE_URL: "jdbc:postgresql://postgres/ontrack"
# InfluxDB being enabled
ONTRACK_INFLUXDB_ENABLED: "true"
ONTRACK_INFLUXDB_URI: "http://influxdb:8086"
selenium:
image: "selenium/standalone-chrome:3.11.0"
environment:
Expand All @@ -34,6 +41,7 @@ services:
ONTRACK_ACCEPTANCE_SELENIUM_TARGET_URL: http://ontrack:8080
ONTRACK_ACCEPTANCE_IMPLICIT_WAIT: 30
ONTRACK_ACCEPTANCE_TARGET_URL: http://ontrack:8080
ONTRACK_ACCEPTANCE_INFLUXDB_URI: http://influxdb:8086
JAVA_OPTIONS: "-Xmx2048m -Xms2048m"
volumes:
- "./build:/ontrack/acceptance/output:rw"
3 changes: 2 additions & 1 deletion ontrack-acceptance/src/main/docker/Dockerfile
Expand Up @@ -30,7 +30,8 @@ ENV ONTRACK_ACCEPTANCE_SELENIUM_GRID_URL='' \
ONTRACK_ACCEPTANCE_TARGET_SSL_DISABLED='false' \
ONTRACK_ACCEPTANCE_CONTEXT='all' \
ONTRACK_ACCEPTANCE_TIMEOUT='120' \
ONTRACK_ACCEPTANCE_IMPLICIT_WAIT='5'
ONTRACK_ACCEPTANCE_IMPLICIT_WAIT='5' \
ONTRACK_ACCEPTANCE_INFLUXDB_URI='http://influxdb:8086'

# Running the acceptance application
ENTRYPOINT /ontrack/acceptance/app/acceptance.sh
3 changes: 2 additions & 1 deletion ontrack-acceptance/src/main/docker/acceptance.sh
Expand Up @@ -11,4 +11,5 @@ exec java \
--ontrack.acceptance.timeout=${ONTRACK_ACCEPTANCE_TIMEOUT} \
--ontrack.acceptance.implicit-wait=${ONTRACK_ACCEPTANCE_IMPLICIT_WAIT} \
--ontrack.acceptance.output-dir=/ontrack/acceptance/output \
--ontrack.acceptance.result-file-name=acceptance-tests.xml
--ontrack.acceptance.result-file-name=acceptance-tests.xml \
--ontrack.acceptance.influxdb-uri=${ONTRACK_ACCEPTANCE_INFLUXDB_URI}
@@ -0,0 +1,64 @@
package net.nemerosa.ontrack.acceptance

import org.influxdb.InfluxDBFactory
import org.influxdb.annotation.Column
import org.influxdb.annotation.Measurement
import org.influxdb.dto.Query
import org.influxdb.impl.InfluxDBResultMapper
import org.junit.Test

import static net.nemerosa.ontrack.test.TestUtils.uid

class ACCInfluxDBRunInfo extends AcceptanceTestClient {

@Test
void 'Run info is exported to InfluxDB'() {
def p = uid("P")
ontrack.project(p) {
branch("1.0") {
build("1.0.0") {
runInfo = [
runTime: 120
]
}
}
}
// Checks the time has been written in InfluxDB
def influxDB = InfluxDBFactory.connect(
configRule.config.influxdbUri
)
def result = influxDB.query(
new Query(
"SELECT * " +
"FROM ontrack_value_run_info_build_time_seconds " +
"WHERE project = '${p}' " +
"AND branch = '1.0'",
"ontrack"
)
)
def resultMapper = new InfluxDBResultMapper()
def measurements = resultMapper.toPOJO(
result,
RunInfoMeasurement
)
assert !measurements.empty
def measurement = measurements.first()
assert measurement.value == 120
assert measurement.project == p
assert measurement.branch == "1.0"
assert measurement.name == "1.0.0"
}

@Measurement(name = "ontrack_value_run_info_build_time_seconds")
static class RunInfoMeasurement {
@Column(name = "value")
int value
@Column(name = "project")
String project
@Column(name = "branch")
String branch
@Column(name = "name")
String name
}

}
Expand Up @@ -73,6 +73,11 @@ public class AcceptanceConfig {
*/
private String resultFileName = "ontrack-acceptance.xml";

/**
* URI to the InfluxDB database
*/
private String influxdbUri = "http://localhost:8086";

@PostConstruct
public void check() throws InterruptedException, ExecutionException, TimeoutException {
// Checks the URL is defined
Expand Down Expand Up @@ -136,6 +141,7 @@ public void log(Consumer<String> logger) {
logger.accept(String.format(">>> Implicit wait: %s", implicitWait));
logger.accept(String.format(">>> Output directory: %s", outputDir));
logger.accept(String.format(">>> Result file name: %s", resultFileName));
logger.accept(String.format(">>> InfluxDB URI: %s", influxdbUri));
}

public static AcceptanceConfig fromEnv() {
Expand All @@ -151,6 +157,7 @@ public static AcceptanceConfig fromEnv() {
c.setImplicitWait(envAsInt("ontrack.acceptance.implicit-wait", c.getImplicitWait(), "GUI element wait (s)"));
c.setOutputDir(envAsFile("ontrack.acceptance.output-dir", c.getOutputDir(), "Output directory"));
c.setResultFileName(env("ontrack.acceptance.result-file-name", "ontrack-acceptance.xml", "Output directory"));
c.setInfluxdbUri(env("ontrack.acceptance.influxdb-uri", "http://localhost:8086", "URI to the InfluxDB database"));
return c;
}

Expand Down
2 changes: 1 addition & 1 deletion ontrack-extension-influxdb/build.gradle
Expand Up @@ -4,7 +4,7 @@ apply plugin: OntrackExtensionPlugin

dependencies {
compile project(':ontrack-extension-support')
compile 'org.influxdb:influxdb-java:2.10'
compile 'org.influxdb:influxdb-java'

testCompile project(':ontrack-it-utils')
testCompile 'org.codehaus.groovy:groovy-all'
Expand Down
Expand Up @@ -19,7 +19,7 @@ class InfluxDBRunInfoListener(
val runTime = runInfo.runTime
if (runTime != null) {
influxDB.write(
Point.measurement("ontrack_run_info_${runnableEntity.runnableEntityType.name.toLowerCase()}_time_seconds")
Point.measurement("ontrack_value_run_info_${runnableEntity.runnableEntityType.name.toLowerCase()}_time_seconds")
.tag(runnableEntity.runMetricTags)
.addField("value", runTime)
.addField("name", runnableEntity.runMetricName)
Expand Down

0 comments on commit f5f76e3

Please sign in to comment.