Skip to content

Commit

Permalink
first commit for looping the call to Nudge api #6
Browse files Browse the repository at this point in the history
  • Loading branch information
fmassart committed Apr 28, 2016
1 parent 9c6cc89 commit f407ae7
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 11 deletions.
10 changes: 8 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@
<version>1.10.19</version>
<scope>test</scope>
</dependency>

<!--<dependency>-->
<!--<groupId>joda-time</groupId>-->
<!--<artifactId>joda-time</artifactId>-->
<!--<version>2.9.3</version>-->
<!--</dependency>-->
</dependencies>


Expand All @@ -62,8 +68,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>

Expand Down
30 changes: 27 additions & 3 deletions src/main/java/json/NudgeApiPOC.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
Expand All @@ -27,6 +30,7 @@ public class NudgeApiPOC {

private static final String NUDGE_HOST = ""; // redefine other env here


private static String TIME_FROM;
private static String TIME_TO;

Expand Down Expand Up @@ -58,15 +62,17 @@ public void init(Configuration config) {
}


public static void start(Configuration config) {
public static void start(Configuration config, Duration duration, Instant now) {
NudgeApiPOC poc = new NudgeApiPOC();
poc.init(config);

System.out.println("---POC starting");
// metrics=time,count,errors&from=2016-04-19T13:22:38Z&to=2016-04-19T14:22:38Z&step=1m
Map<String, String> params = new HashMap<>();
params.put("from", TIME_FROM);
params.put("to", TIME_TO);

Instant fromInstant = poc.buildFromInstant(duration, now);
params.put("from", poc.formatInstantToNudgeDate(fromInstant));
params.put("to", poc.formatInstantToNudgeDate(now));
params.put("metrics", "time,count,errors");
params.put("step", "1m");

Expand Down Expand Up @@ -112,4 +118,22 @@ public static void extractToCSV(TimeSeries data, Connection.LayerType layerType)

}

/**
*
* @param duration
* @param now
* @return
*/
public Instant buildFromInstant(Duration duration, Instant now) {
return now.minusSeconds(duration.getSeconds());
}


public String formatInstantToNudgeDate(Instant instant) {
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH:mm")
// .withZone(ZoneId.of("Europe/Paris"));
// .withZone(ZoneId.systemDefault());
DateTimeFormatter formatter = DateTimeFormatter.ISO_INSTANT;
return formatter.format(instant);
}
}
30 changes: 24 additions & 6 deletions src/main/java/org/nudge/elasticstack/Daemon.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import json.NudgeApiPOC;
import org.nudge.elasticstack.config.Configuration;

import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;
Expand All @@ -20,19 +22,28 @@ public Thread newThread(Runnable runnable) {
}

});
scheduler.scheduleAtFixedRate(new DaemonTask(config), 0L, 10L, TimeUnit.SECONDS);

long period = 1L;
TimeUnit minutes = TimeUnit.MINUTES;
Duration duration = retrieveDuration(period, minutes);

scheduler.scheduleAtFixedRate(new DaemonTask(config, duration), 0L, period, minutes);
}

static class DaemonTask implements Runnable {

private Configuration config;
private Duration duration;

public DaemonTask(Configuration config) {
public DaemonTask(Configuration config, Duration duration) {
this.config = config;
this.duration = duration;
}

@Override
public void run() {
Instant instant = Instant.now();

/*
* for (String metric : config.getMetrics()) {
*
Expand All @@ -48,15 +59,22 @@ public void run() {

// Integration of devoxx poc #5
try {
NudgeApiPOC.start(config);
NudgeApiPOC.start(config, duration, instant);
} catch (Throwable t) {
t.printStackTrace();
t.printStackTrace();
}
}
}

// recupere la durée à requeter, -> demander à boite noire d'extraire en fonction des metrics demandées.

public static Duration retrieveDuration(long period, TimeUnit timeUnit) {
if (timeUnit != null) {
long nbOfSnd = TimeUnit.SECONDS.convert(period, timeUnit);
return Duration.ofSeconds(nbOfSnd);
}

return null;
}


}
9 changes: 9 additions & 0 deletions src/main/java/org/nudge/elasticstack/executor/Metric.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package org.nudge.elasticstack.executor;

/**
* @author Frédéric Massart
*/
public enum Metric {

JAVA, CASSANDRA
}
45 changes: 45 additions & 0 deletions src/test/java/json/NudgeApiPOCTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package json;

import org.junit.Test;

import java.time.Duration;
import java.time.Instant;

import static org.junit.Assert.assertEquals;

/**
* @author Frédéric Massart
*/
public class NudgeApiPOCTest {

NudgeApiPOC nudgeApiPOC = new NudgeApiPOC();

@Test
public void buildFromInstantTest() {
// given
Duration duration = Duration.ofDays(2);

Instant now = Instant.parse("2014-03-18T00:00:00.000Z");
Instant expectedInstant = Instant.parse("2014-03-16T00:00:00.000Z");

// when
Instant fromInstant = nudgeApiPOC.buildFromInstant(duration, now);

// then
assertEquals(expectedInstant, fromInstant);
}


@Test
public void formatInstantToNudgeDateTestWithLocale() {
// given
String date = "2014-03-16T12:00:00.000Z";

// when
String nudgeDate = nudgeApiPOC.formatInstantToNudgeDate(Instant.parse("2014-03-16T12:00:00.000Z"));

// then
assertEquals(date, nudgeDate);

}
}
28 changes: 28 additions & 0 deletions src/test/java/org/nudge/elasticstack/DaemonTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package org.nudge.elasticstack;

import org.junit.Test;

import java.time.Duration;
import java.util.concurrent.TimeUnit;

import static org.junit.Assert.assertEquals;

/**
* @author Frédéric Massart
*/
public class DaemonTest {

@Test
public void testRetrieveDuration() throws Exception {
// given
long period = 10;
TimeUnit timeUnit = TimeUnit.DAYS;
Duration expectedDuration = Duration.ofDays(10);

// when
Duration durationResponse = Daemon.retrieveDuration(period, timeUnit);

// then
assertEquals(expectedDuration, durationResponse);
}
}

0 comments on commit f407ae7

Please sign in to comment.