Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
N
NFRTool-Comms
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ELASTIC-H2020
ELASTIC-SA
NFR-Tool
NFRTool-Comms
Commits
81b3c673
Commit
81b3c673
authored
Jun 19, 2020
by
Jacobo Fanjul Fernández
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
P2P Monitoring
parent
b0db584c
Changes
27
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
956 additions
and
834 deletions
+956
-834
app/.classpath
app/.classpath
+0
-1
app/.gitignore
app/.gitignore
+1
-0
app/.project
app/.project
+23
-23
app/.settings/org.eclipse.core.resources.prefs
app/.settings/org.eclipse.core.resources.prefs
+3
-2
app/.settings/org.eclipse.jdt.core.prefs
app/.settings/org.eclipse.jdt.core.prefs
+15
-15
app/.settings/org.eclipse.m2e.core.prefs
app/.settings/org.eclipse.m2e.core.prefs
+4
-4
app/cfgfiles/client.properties
app/cfgfiles/client.properties
+2
-2
app/cfgfiles/global.properties
app/cfgfiles/global.properties
+1
-1
app/cfgfiles/log4j2.xml
app/cfgfiles/log4j2.xml
+70
-70
app/cfgfiles/session.properties
app/cfgfiles/session.properties
+5
-5
app/files/commscost-config.yml
app/files/commscost-config.yml
+1
-2
app/files/config.yml
app/files/config.yml
+1
-1
app/files/lalala.py
app/files/lalala.py
+47
-47
app/pom.xml
app/pom.xml
+79
-79
app/src/main/java/netMonitor/NetMonitor.java
app/src/main/java/netMonitor/NetMonitor.java
+46
-0
app/src/main/java/nfrTool/CommsMonitoringTask.java
app/src/main/java/nfrTool/CommsMonitoringTask.java
+59
-59
app/src/main/java/nfrTool/NFRMonitor.java
app/src/main/java/nfrTool/NFRMonitor.java
+36
-36
app/src/main/java/nfrTool/NFRTool.java
app/src/main/java/nfrTool/NFRTool.java
+35
-26
app/src/main/java/resourceManager/ResourceManager.java
app/src/main/java/resourceManager/ResourceManager.java
+52
-52
app/src/main/java/resourceManager/ResourceManagerComms.java
app/src/main/java/resourceManager/ResourceManagerComms.java
+157
-157
app/src/main/java/utils/Constants.java
app/src/main/java/utils/Constants.java
+11
-10
app/src/main/java/utils/FileUtils.java
app/src/main/java/utils/FileUtils.java
+118
-118
app/src/main/java/utils/HardwareInfo.java
app/src/main/java/utils/HardwareInfo.java
+190
-124
app/target/classes/nfrTool/NFRTool.class
app/target/classes/nfrTool/NFRTool.class
+0
-0
app/target/classes/resourceManager/ResourceManager.class
app/target/classes/resourceManager/ResourceManager.class
+0
-0
app/target/classes/utils/Constants.class
app/target/classes/utils/Constants.class
+0
-0
app/target/classes/utils/HardwareInfo.class
app/target/classes/utils/HardwareInfo.class
+0
-0
No files found.
app/.classpath
View file @
81b3c673
...
...
@@ -2,7 +2,6 @@
<classpath>
<classpathentry
kind=
"con"
path=
"org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"
>
<attributes>
<attribute
name=
"module"
value=
"true"
/>
<attribute
name=
"maven.pomderived"
value=
"true"
/>
</attributes>
</classpathentry>
...
...
app/.gitignore
0 → 100644
View file @
81b3c673
/target/
app/.project
View file @
81b3c673
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>
app
</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>
org.eclipse.jdt.core.javabuilder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
org.eclipse.m2e.core.maven2Builder
</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>
org.eclipse.m2e.core.maven2Nature
</nature>
<nature>
org.eclipse.jdt.core.javanature
</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>
app
</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>
org.eclipse.jdt.core.javabuilder
</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>
org.eclipse.m2e.core.maven2Builder
</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>
org.eclipse.m2e.core.maven2Nature
</nature>
<nature>
org.eclipse.jdt.core.javanature
</nature>
</natures>
</projectDescription>
app/.settings/org.eclipse.core.resources.prefs
View file @
81b3c673
eclipse.preferences.version=1
encoding/<project>=UTF-8
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding/<project>=UTF-8
app/.settings/org.eclipse.jdt.core.prefs
View file @
81b3c673
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
app/.settings/org.eclipse.m2e.core.prefs
View file @
81b3c673
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
app/cfgfiles/client.properties
View file @
81b3c673
HOST
=
172.16.102.26
TCPPORT
=
11034
HOST
=
172.16.102.26
TCPPORT
=
11034
app/cfgfiles/global.properties
View file @
81b3c673
CHECK_LOG4J_DEBUG
=
false
CHECK_LOG4J_DEBUG
=
false
app/cfgfiles/log4j2.xml
View file @
81b3c673
<?xml version="1.0" encoding="UTF-8"?>
<Configuration
monitorInterval=
"60"
status=
"off"
>
<Appenders>
<Console
name=
"ConsoleAppender"
target=
"SYSTEM_OUT"
>
<PatternLayout
pattern=
"%d{ISO8601} %p [%c] [%t] [%C{1}:%L] %m%n"
></PatternLayout>
</Console>
</Appenders>
<Loggers>
<Logger
name=
"DataClay.api"
level=
"off"
/>
<!-- Runtime -->
<Logger
name=
"ClientRuntime"
level=
"off"
/>
<Logger
name=
"ClientManagementLib"
level=
"off"
/>
<Logger
name=
"DataClayRuntime"
level=
"off"
/>
<Logger
name=
"DataServiceRuntime"
level=
"off"
/>
<Logger
name=
"DataClayObjectLoader"
level=
"off"
/>
<Logger
name=
"DataClayObject"
level=
"off"
/>
<!-- This is very verbose! -->
<!-- Data service -->
<Logger
name=
"DataService"
level=
"off"
/>
<Logger
name=
"ExecutionEnvironmentSrv"
level=
"off"
/>
<!-- Lockers -->
<Logger
name=
"dataclay.util.classloaders.SyncClass"
level=
"off"
/>
<Logger
name=
"dataclay.heap.LockerPool"
level=
"off"
/>
<Logger
name=
"LockerPool"
level=
"off"
/>
<Logger
name=
"dataclay.util.classloaders.ClassLockers"
level=
"off"
/>
<!-- Garbage collection -->
<Logger
name=
"GlobalGC"
level=
"off"
/>
<Logger
name=
"heap.HeapManager"
level=
"off"
/>
<Logger
name=
"ReferenceCounting"
level=
"off"
/>
<Logger
name=
"StorageLocation"
level=
"off"
/>
<!-- Logic module -->
<Logger
name=
"LogicModule"
level=
"off"
/>
<Logger
name=
"LMDB"
level=
"off"
/>
<Logger
name=
"managers"
level=
"off"
/>
<Logger
name=
"MetaDataService.db"
level=
"off"
/>
<Logger
name=
"MetaDataService"
level=
"off"
/>
<!-- Communication -->
<Logger
name=
"io.grpc"
level=
"off"
/>
<Logger
name=
"io.netty"
level=
"off"
/>
<Logger
name=
"NettyClientHandler"
level=
"off"
/>
<Logger
name=
"grpc.client"
level=
"off"
/>
<Logger
name=
"communication.LogicModule.service"
level=
"off"
/>
<Logger
name=
"grpc.client.logicmodule"
level=
"off"
/>
<Logger
name=
"grpc.client.dataservice.DS1"
level=
"off"
/>
<!-- Databases -->
<Logger
name=
"dataclay.dbhandler"
level=
"off"
/>
<Logger
name=
"dbhandler.PostgresConnection"
level=
"off"
/>
<Logger
name=
"org.apache.commons.dbcp2"
level=
"off"
/>
<Logger
name=
"PostgresHandler"
level=
"off"
/>
<Logger
name=
"SQLHandler"
level=
"off"
/>
<!-- Misc -->
<Logger
name=
"util"
level=
"off"
/>
<Logger
name=
"exceptions"
level=
"off"
/>
<Logger
name=
"Paraver"
level=
"off"
/>
<Logger
name=
"DataClaySerializationLib"
level=
"off"
/>
<Logger
name=
"DataClayDeserializationLib"
level=
"off"
/>
<!-- ROOT LOGGER -->
<Root
level=
"off"
>
<AppenderRef
ref=
"ConsoleAppender"
/>
</Root>
</Loggers>
</Configuration>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration
monitorInterval=
"60"
status=
"off"
>
<Appenders>
<Console
name=
"ConsoleAppender"
target=
"SYSTEM_OUT"
>
<PatternLayout
pattern=
"%d{ISO8601} %p [%c] [%t] [%C{1}:%L] %m%n"
></PatternLayout>
</Console>
</Appenders>
<Loggers>
<Logger
name=
"DataClay.api"
level=
"off"
/>
<!-- Runtime -->
<Logger
name=
"ClientRuntime"
level=
"off"
/>
<Logger
name=
"ClientManagementLib"
level=
"off"
/>
<Logger
name=
"DataClayRuntime"
level=
"off"
/>
<Logger
name=
"DataServiceRuntime"
level=
"off"
/>
<Logger
name=
"DataClayObjectLoader"
level=
"off"
/>
<Logger
name=
"DataClayObject"
level=
"off"
/>
<!-- This is very verbose! -->
<!-- Data service -->
<Logger
name=
"DataService"
level=
"off"
/>
<Logger
name=
"ExecutionEnvironmentSrv"
level=
"off"
/>
<!-- Lockers -->
<Logger
name=
"dataclay.util.classloaders.SyncClass"
level=
"off"
/>
<Logger
name=
"dataclay.heap.LockerPool"
level=
"off"
/>
<Logger
name=
"LockerPool"
level=
"off"
/>
<Logger
name=
"dataclay.util.classloaders.ClassLockers"
level=
"off"
/>
<!-- Garbage collection -->
<Logger
name=
"GlobalGC"
level=
"off"
/>
<Logger
name=
"heap.HeapManager"
level=
"off"
/>
<Logger
name=
"ReferenceCounting"
level=
"off"
/>
<Logger
name=
"StorageLocation"
level=
"off"
/>
<!-- Logic module -->
<Logger
name=
"LogicModule"
level=
"off"
/>
<Logger
name=
"LMDB"
level=
"off"
/>
<Logger
name=
"managers"
level=
"off"
/>
<Logger
name=
"MetaDataService.db"
level=
"off"
/>
<Logger
name=
"MetaDataService"
level=
"off"
/>
<!-- Communication -->
<Logger
name=
"io.grpc"
level=
"off"
/>
<Logger
name=
"io.netty"
level=
"off"
/>
<Logger
name=
"NettyClientHandler"
level=
"off"
/>
<Logger
name=
"grpc.client"
level=
"off"
/>
<Logger
name=
"communication.LogicModule.service"
level=
"off"
/>
<Logger
name=
"grpc.client.logicmodule"
level=
"off"
/>
<Logger
name=
"grpc.client.dataservice.DS1"
level=
"off"
/>
<!-- Databases -->
<Logger
name=
"dataclay.dbhandler"
level=
"off"
/>
<Logger
name=
"dbhandler.PostgresConnection"
level=
"off"
/>
<Logger
name=
"org.apache.commons.dbcp2"
level=
"off"
/>
<Logger
name=
"PostgresHandler"
level=
"off"
/>
<Logger
name=
"SQLHandler"
level=
"off"
/>
<!-- Misc -->
<Logger
name=
"util"
level=
"off"
/>
<Logger
name=
"exceptions"
level=
"off"
/>
<Logger
name=
"Paraver"
level=
"off"
/>
<Logger
name=
"DataClaySerializationLib"
level=
"off"
/>
<Logger
name=
"DataClayDeserializationLib"
level=
"off"
/>
<!-- ROOT LOGGER -->
<Root
level=
"off"
>
<AppenderRef
ref=
"ConsoleAppender"
/>
</Root>
</Loggers>
</Configuration>
app/cfgfiles/session.properties
View file @
81b3c673
Account
=
ElasticUser
Password
=
ElasticPass
DataSets
=
ElasticDS
DataSetForStore
=
ElasticDS
StubsClasspath
=
./stubs
Account
=
ElasticUser
Password
=
ElasticPass
DataSets
=
ElasticDS
DataSetForStore
=
ElasticDS
StubsClasspath
=
./stubs
app/files/commscost-config.yml
View file @
81b3c673
monitor
:
interval
:
1
netinterfaces
:
-
Wi-Fi
-
lalala
-
enp0s3
costparams
:
{
norm
:
10
}
import
:
file
:
{
enabled
:
true
,
path
:
./telemetry-output
}
...
...
app/files/config.yml
View file @
81b3c673
monitor
:
interval
:
1
netinterfaces
:
[
"
Wi-Fi
"
]
netinterfaces
:
[
"
enp0s3'
"
]
endpoint
:
{
icmp_ping
:
8.8.8.8
,
http_ping
:
'
http://www.konnekt.ikerlan.es'
}
export
:
screen
:
{
enabled
:
false
}
...
...
app/files/lalala.py
View file @
81b3c673
import
sys
import
os
import
re
if
"C:
\\
Apps
\\
Python
\\
Python38
\\
Lib"
not
in
sys
.
path
:
sys
.
path
.
append
(
"C:
\\
Apps
\\
Python
\\
Python38
\\
Lib"
)
import
psutil
info
=
{}
pll_stats
=
psutil
.
net_io_counters
(
pernic
=
True
)
pernic_addr
=
psutil
.
net_if_addrs
()
iface
=
sys
.
argv
[
1
]
ninfo
=
{}
# Get total/dropped packets and data volume
ninfo
[
'rx_MB'
]
=
pll_stats
[
iface
]
.
bytes_recv
/
1000000
print
(
'rx_MB:'
+
str
(
ninfo
[
'rx_MB'
]))
ninfo
[
'rx_packets'
]
=
pll_stats
[
iface
]
.
packets_recv
print
(
'rx_packets:'
+
str
(
ninfo
[
'rx_packets'
]))
ninfo
[
'rx_lost_packets'
]
=
pll_stats
[
iface
]
.
dropin
print
(
'rx_lost_packets:'
+
str
(
ninfo
[
'rx_lost_packets'
]))
ninfo
[
'tx_MB'
]
=
pll_stats
[
iface
]
.
bytes_sent
/
1000000
print
(
'tx_MB:'
+
str
(
ninfo
[
'tx_MB'
]))
ninfo
[
'tx_packets'
]
=
pll_stats
[
iface
]
.
packets_sent
print
(
'tx_packets:'
+
str
(
ninfo
[
'tx_packets'
]))
ninfo
[
'tx_lost_packets'
]
=
pll_stats
[
iface
]
.
dropout
print
(
'tx_lost_packets:'
+
str
(
ninfo
[
'tx_lost_packets'
]))
# Get RTT to a certain endpoint via ICMP
#command = "ping -c 1 -w 1 -W 1 -I {} {}".format(iface, '8.8.8.8')
command
=
"ping -c 1 -w 1 8.8.8.8"
request
=
os
.
popen
(
command
)
.
read
()
#request = re.search('=\\s(\\d+\\.\\d+)', request)
request
=
re
.
search
(
'Media =
\\
s(
\\
d+)'
,
request
)
if
request
is
None
:
ninfo
[
'rtt_ms'
]
=
"ICMP request timeout"
print
(
'rtt_ms:'
+
str
(
ninfo
[
'rtt_ms'
]))
else
:
rtt
=
float
(
request
.
group
(
1
))
ninfo
[
'rtt_ms'
]
=
float
(
'{0:.2f}'
.
format
(
rtt
))
print
(
'rtt_ms:'
+
str
(
ninfo
[
'rtt_ms'
]))
info
[
iface
]
=
ninfo
import
sys
import
os
import
re
if
"C:
\\
Apps
\\
Python
\\
Python38
\\
Lib"
not
in
sys
.
path
:
sys
.
path
.
append
(
"C:
\\
Apps
\\
Python
\\
Python38
\\
Lib"
)
import
psutil
info
=
{}
pll_stats
=
psutil
.
net_io_counters
(
pernic
=
True
)
pernic_addr
=
psutil
.
net_if_addrs
()
iface
=
sys
.
argv
[
1
]
ninfo
=
{}
# Get total/dropped packets and data volume
ninfo
[
'rx_MB'
]
=
pll_stats
[
iface
]
.
bytes_recv
/
1000000
print
(
'rx_MB:'
+
str
(
ninfo
[
'rx_MB'
]))
ninfo
[
'rx_packets'
]
=
pll_stats
[
iface
]
.
packets_recv
print
(
'rx_packets:'
+
str
(
ninfo
[
'rx_packets'
]))
ninfo
[
'rx_lost_packets'
]
=
pll_stats
[
iface
]
.
dropin
print
(
'rx_lost_packets:'
+
str
(
ninfo
[
'rx_lost_packets'
]))
ninfo
[
'tx_MB'
]
=
pll_stats
[
iface
]
.
bytes_sent
/
1000000
print
(
'tx_MB:'
+
str
(
ninfo
[
'tx_MB'
]))
ninfo
[
'tx_packets'
]
=
pll_stats
[
iface
]
.
packets_sent
print
(
'tx_packets:'
+
str
(
ninfo
[
'tx_packets'
]))
ninfo
[
'tx_lost_packets'
]
=
pll_stats
[
iface
]
.
dropout
print
(
'tx_lost_packets:'
+
str
(
ninfo
[
'tx_lost_packets'
]))
# Get RTT to a certain endpoint via ICMP
#command = "ping -c 1 -w 1 -W 1 -I {} {}".format(iface, '8.8.8.8')
command
=
"ping -c 1 -w 1 8.8.8.8"
request
=
os
.
popen
(
command
)
.
read
()
#request = re.search('=\\s(\\d+\\.\\d+)', request)
request
=
re
.
search
(
'Media =
\\
s(
\\
d+)'
,
request
)
if
request
is
None
:
ninfo
[
'rtt_ms'
]
=
"ICMP request timeout"
print
(
'rtt_ms:'
+
str
(
ninfo
[
'rtt_ms'
]))
else
:
rtt
=
float
(
request
.
group
(
1
))
ninfo
[
'rtt_ms'
]
=
float
(
'{0:.2f}'
.
format
(
rtt
))
print
(
'rtt_ms:'
+
str
(
ninfo
[
'rtt_ms'
]))
info
[
iface
]
=
ninfo
app/pom.xml
View file @
81b3c673
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.ikerlan.dataclay
</groupId>
<artifactId>
nfrtool-comms
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.target>
8
</maven.compiler.target>
<maven.compiler.source>
8
</maven.compiler.source>
<maven.compiler.release>
8
</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>
nfrtool-dataclay
</groupId>
<artifactId>
nfrtool-dataclay-stubs
</artifactId>
<version>
2.0
</version>
</dependency>
<dependency>
<groupId>
es.bsc.dataclay
</groupId>
<artifactId>
dataclay
</artifactId>
<version>
2.1
</version>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.dataformat
</groupId>
<artifactId>
jackson-dataformat-yaml
</artifactId>
<version>
2.10.3
</version>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<version>
2.10.3
</version>
</dependency>
<dependency>
<groupId>
org.yaml
</groupId>
<artifactId>
snakeyaml
</artifactId>
<version>
1.21
</version>
</dependency>
</dependencies>
<build>
<finalName>
nfrtool
</finalName>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-shade-plugin
</artifactId>
<version>
3.2.2
</version>
<executions>
<execution>
<phase>
package
</phase>
<goals>
<goal>
shade
</goal>
</goals>
<configuration>
<transformers>
<!-- add Main-Class to manifest file -->
<transformer
implementation=
"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"
>
<mainClass>
nfrTool.NFRTool
</mainClass>
</transformer>
</transformers>
<artifactSet>
<excludes>
<exclude>
classworlds:classworlds
</exclude>
<exclude>
junit:junit
</exclude>
<exclude>
jmock:*
</exclude>
<exclude>
*:xml-apis
</exclude>
<exclude>
org.apache.maven:lib:tests
</exclude>
<exclude>
log4j:log4j:jar:
</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.ikerlan.dataclay
</groupId>
<artifactId>
nfrtool-comms
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.target>
8
</maven.compiler.target>
<maven.compiler.source>
8
</maven.compiler.source>
<maven.compiler.release>
8
</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>
es.bsc.compss
</groupId>
<artifactId>
nfrtool-dataclay-stubs
</artifactId>
<version>
2.0
</version>
</dependency>
<dependency>
<groupId>
es.bsc.dataclay
</groupId>
<artifactId>
dataclay
</artifactId>
<version>
2.1
</version>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.dataformat
</groupId>
<artifactId>
jackson-dataformat-yaml
</artifactId>
<version>
2.10.3
</version>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<version>
2.10.3
</version>
</dependency>
<dependency>
<groupId>
org.yaml
</groupId>
<artifactId>
snakeyaml
</artifactId>
<version>
1.21
</version>
</dependency>
</dependencies>
<build>
<finalName>
nfrtool
</finalName>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-shade-plugin
</artifactId>
<version>
3.2.2
</version>
<executions>
<execution>
<phase>
package
</phase>
<goals>
<goal>
shade
</goal>
</goals>
<configuration>
<transformers>
<!-- add Main-Class to manifest file -->
<transformer
implementation=
"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"
>
<mainClass>
nfrTool.NFRTool
</mainClass>
</transformer>
</transformers>
<artifactSet>
<excludes>
<exclude>
classworlds:classworlds
</exclude>
<exclude>
junit:junit
</exclude>
<exclude>
jmock:*
</exclude>
<exclude>
*:xml-apis
</exclude>
<exclude>
org.apache.maven:lib:tests
</exclude>
<exclude>
log4j:log4j:jar:
</exclude>
</excludes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
app/src/main/java/netMonitor/NetMonitor.java
0 → 100644
View file @
81b3c673
package
netMonitor
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
es.bsc.compss.nfr.model.CommunicationLink
;
import
es.bsc.compss.nfr.model.ElasticSystem
;
import
es.bsc.compss.nfr.model.Node
;
import
resourceManager.ResourceManager
;
import
utils.HardwareInfo
;
public
class
NetMonitor
extends
ResourceManager
{
HardwareInfo
hardwareInfo
;
Node
node
;
public
NetMonitor
(
ElasticSystem
elasticSystem
,
HardwareInfo
hardwareInfo
)
{
super
(
elasticSystem
);
this
.
hardwareInfo
=
hardwareInfo
;
this
.
node
=
getNodeByIP
(
"10.0.2.15"
);
//TODO: get IP as I should
}
public
Node
getNodeByIP
(
String
ip
)
{
return
elasticSystem
.
getNodes
().
stream
().
filter
(
node
->
node
.
getIpEth
().
equals
(
ip
)).
findFirst
().
orElse
(
null
);
}
public
void
setLinksRTT
()
{
List
<
CommunicationLink
>
commsList
=
this
.
node
.
getCommunicationLinks
().
stream
().
filter
(
cl
->
cl
.
getIpNode1
().
equals
(
"10.0.2.15"
)).
collect
(
Collectors
.
toList
());
commsList
.
stream
().
forEach
(
cl
->
{
cl
.
setDelayRtt
(
hardwareInfo
.
getLinkRTT
(
cl
.
getIpNode2
()));
});
//hardwareInfo.getLinksRTT();
}
}
app/src/main/java/nfrTool/CommsMonitoringTask.java
View file @
81b3c673
package
nfrTool
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Map
;
import
java.util.TimerTask
;
import
org.json.JSONObject
;
import
resourceManager.ResourceManagerComms
;
import
utils.Constants
;
import
utils.FileUtils
;
import
utils.HardwareInfo
;
public
class
CommsMonitoringTask
extends
TimerTask
{
ResourceManagerComms
resourceManager
;
FileUtils
fileUtils
;
HardwareInfo
hardWareInfo
;
public
CommsMonitoringTask
(
ResourceManagerComms
resourceManager
)
{
this
.
resourceManager
=
resourceManager
;
this
.
fileUtils
=
new
FileUtils
();
this
.
hardWareInfo
=
new
HardwareInfo
();
}
@Override
public
void
run
()
{
this
.
resourceManager
.
getConfig
(
Constants
.
CONFIG_FILE_PATH
);
Map
<
String
,
Integer
>
intResultsMap
=
this
.
resourceManager
.
checkThresholds
(
hardWareInfo
.
getTelemetry
(),
Arrays
.
asList
(
"devLevel"
,
"rttmax"
),
Arrays
.
asList
(
"devLevel"
,
"pllmax"
));
intResultsMap
.
forEach
((
k
,
v
)
->
{
switch
(
v
)
{
case
1
:
System
.
out
.
println
(
"[-] Could not obtain comms. attributes for Interface: \" + k"
);
break
;
case
2
:
System
.
out
.
println
(
"[?] Comms. requirements not satisfied for Interface: "
+
k
);
Map
<
String
,
Double
>
cost
=
this
.
resourceManager
.
getCost
((
JSONObject
)
hardWareInfo
.
getTelemetry
().
query
(
"/net_interfaces"
));
System
.
out
.
println
(
"\tApplication costs: "
+
cost
.
toString
());
double
maxCost
=
Collections
.
max
(
cost
.
values
());
System
.
out
.
println
(
maxCost
);
break
;
case
0
:
System
.
out
.
println
(
"[+] Interface "
+
k
+
" up and Running"
);
break
;
}
});
}
}
package
nfrTool
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Map
;
import
java.util.TimerTask
;
import
org.json.JSONObject
;
import
resourceManager.ResourceManagerComms
;
import
utils.Constants
;
import
utils.FileUtils
;
import
utils.HardwareInfo
;
public
class
CommsMonitoringTask
extends
TimerTask
{
ResourceManagerComms
resourceManager
;
FileUtils
fileUtils
;
HardwareInfo
hardWareInfo
;
public
CommsMonitoringTask
(
ResourceManagerComms
resourceManager
)
{
this
.
resourceManager
=
resourceManager
;
this
.
fileUtils
=
new
FileUtils
();
this
.
hardWareInfo
=
new
HardwareInfo
();
}
@Override
public
void
run
()
{
this
.
resourceManager
.
getConfig
(
Constants
.
CONFIG_FILE_PATH
);
Map
<
String
,
Integer
>
intResultsMap
=
this
.
resourceManager
.
checkThresholds
(
hardWareInfo
.
getTelemetry
(),
Arrays
.
asList
(
"devLevel"
,
"rttmax"
),
Arrays
.
asList
(
"devLevel"
,
"pllmax"
));
intResultsMap
.
forEach
((
k
,
v
)
->
{
switch
(
v
)
{
case
1
:
System
.
out
.
println
(
"[-] Could not obtain comms. attributes for Interface: \" + k"
);
break
;
case
2
:
System
.
out
.
println
(
"[?] Comms. requirements not satisfied for Interface: "
+
k
);
Map
<
String
,
Double
>
cost
=
this
.
resourceManager
.
getCost
((
JSONObject
)
hardWareInfo
.
getTelemetry
().
query
(
"/net_interfaces"
));
System
.
out
.
println
(
"\tApplication costs: "
+
cost
.
toString
());
double
maxCost
=
Collections
.
max
(
cost
.
values
());
System
.
out
.
println
(
maxCost
);
break
;
case
0
:
System
.
out
.
println
(
"[+] Interface "
+
k
+
" up and Running"
);
break
;
}
});
}
}
app/src/main/java/nfrTool/NFRMonitor.java
View file @
81b3c673
package
nfrTool
;
import
java.util.Timer
;
import
es.bsc.dataclay.api.DataClay
;
import
es.bsc.dataclay.api.DataClayException
;
import
resourceManager.ResourceManagerComms
;
public
class
NFRMonitor
{
ResourceManagerComms
resourceManager
;
long
period
;