Implement query about total data volume per minute
This commit is contained in:
parent
4f46226ba9
commit
19b6fc3e4e
|
@ -25,6 +25,9 @@ public class Main {
|
||||||
for(TcpConnectionModel m : result) {
|
for(TcpConnectionModel m : result) {
|
||||||
System.out.println(m.toString());
|
System.out.println(m.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long r = tcr.getTotalDataVolumePerMinuteBetweenHosts("172.16.114.207", "206.251.19.72");
|
||||||
|
System.out.println("Bytes per Second: " + r);
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
odhs.close();
|
odhs.close();
|
||||||
|
|
|
@ -101,6 +101,10 @@ public class TcpConnectionModel {
|
||||||
sb.append(this.startTs);
|
sb.append(this.startTs);
|
||||||
sb.append(".");
|
sb.append(".");
|
||||||
sb.append(this.startMs);
|
sb.append(this.startMs);
|
||||||
|
sb.append("->");
|
||||||
|
sb.append(this.endTs);
|
||||||
|
sb.append(".");
|
||||||
|
sb.append(this.endMs);
|
||||||
sb.append("] ");
|
sb.append("] ");
|
||||||
sb.append(this.sourceIp);
|
sb.append(this.sourceIp);
|
||||||
sb.append(":");
|
sb.append(":");
|
||||||
|
|
|
@ -3,9 +3,7 @@ package de.hsh.inform.orientdb_project.repository;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.orientechnologies.orient.core.command.OCommandRequest;
|
|
||||||
import com.orientechnologies.orient.core.sql.OCommandSQL;
|
import com.orientechnologies.orient.core.sql.OCommandSQL;
|
||||||
import com.tinkerpop.blueprints.GraphQuery;
|
|
||||||
import com.tinkerpop.blueprints.Vertex;
|
import com.tinkerpop.blueprints.Vertex;
|
||||||
import com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx;
|
import com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx;
|
||||||
|
|
||||||
|
@ -46,11 +44,27 @@ public class TcpConnectionRepository {
|
||||||
return this.getListFromVertices(vertices);
|
return this.getListFromVertices(vertices);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TcpConnectionModel> getTotalDataVolumeBetweenHosts(String ipA, String ipB) {
|
public long getTotalDataVolumePerMinuteBetweenHosts(String ipA, String ipB) {
|
||||||
GraphQuery gq = this.ogf.query();
|
String sql = "SELECT FROM TcpConnection "
|
||||||
gq = gq.has("@class", "TcpConnection");
|
+ "WHERE (sourceIp = '" + ipA + "' AND targetIp = '" + ipB + "') "
|
||||||
// TODO
|
+ "OR (sourceIp = '" + ipB + "' AND targetIp = '" + ipA + "') ";
|
||||||
return this.getListFromVertices(gq.vertices());
|
@SuppressWarnings("unchecked") // We know.
|
||||||
|
Iterable<Vertex> vertices = (Iterable<Vertex>) this.ogf.command(new OCommandSQL(sql)).execute();
|
||||||
|
List<TcpConnectionModel> result = this.getListFromVertices(vertices);
|
||||||
|
long earliestStartTs = -1;
|
||||||
|
long latestEndTs = -1;
|
||||||
|
long totalVolume = 0;
|
||||||
|
for(TcpConnectionModel model : result) {
|
||||||
|
System.out.println(model.toString());
|
||||||
|
totalVolume += model.getTotalVolume();
|
||||||
|
if(earliestStartTs == -1 || earliestStartTs > model.startTs) {
|
||||||
|
earliestStartTs = model.startTs;
|
||||||
|
}
|
||||||
|
if(latestEndTs == -1 || latestEndTs < model.endTs) {
|
||||||
|
latestEndTs = model.endTs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (long) ((1.0*totalVolume) / (1.0*(latestEndTs - earliestStartTs)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<TcpConnectionModel> getListFromVertices(Iterable<Vertex> vertices) {
|
private List<TcpConnectionModel> getListFromVertices(Iterable<Vertex> vertices) {
|
||||||
|
|
Loading…
Reference in New Issue