25252626# Homepage: https://www.nntb.no/~dreibh/netperfmeter/
2727
28-
29- # ###### Set global variable (given as name string) to given value ##########
30- setGlobalVariable <- function (variable , value )
31- {
32- globalEnv <- sys.frame()
33- assign(variable , value , envir = globalEnv )
34- }
35-
28+ library(" data.table" , warn.conflicts = FALSE )
29+ library(" dplyr" , warn.conflicts = FALSE )
30+ # library("ggplot2")
3631
3732
3833# ###########################################################################
@@ -42,6 +37,15 @@ setGlobalVariable <- function(variable, value)
4237pdfMetadataFile <- NA
4338pdfMetadataPage <- NA
4439
40+
41+ # ###### Set global variable (given as name string) to given value ##########
42+ setGlobalVariable <- function (variable , value )
43+ {
44+ globalEnv <- sys.frame()
45+ assign(variable , value , envir = globalEnv )
46+ }
47+
48+
4549# ###### Create PDF info ####################################################
4650openPDFMetadata <- function (name )
4751{
@@ -94,7 +98,7 @@ closePDFMetadata <- function()
9498# ###### Create a plot ######################################################
9599createPlot <- function (dataSet , title , ySet , yTitle , baseColor , zSet , zTitle , vSet = c(), vTitle = " " ,type = " linesx" , bookmarkLevel = 3 )
96100{
97- cat(sep = " " , " Plotting " , title , " ...\n " )
101+ cat(sep = " " , pdfMetadataPage + 1 , " : Plotting " , title , " ...\n " )
98102
99103 xSet <- dataSet $ RelTime
100104 xTitle <- " Time{t}[s]"
@@ -114,7 +118,7 @@ createPlot <- function(dataSet, title, ySet, yTitle, baseColor, zSet, zTitle, vS
114118 }
115119
116120 xAxisTicks <- getIntegerTicks(c(0 , gRuntime )) # Set to c() for automatic setting
117- yAxisTicks <- getIntegerTicks(ySet ) # Set to c() for automatic setting
121+ yAxisTicks <- getIntegerTicks(ySet ) # Set to c() for automatic setting
118122
119123 opar <- par(fg = baseColor )
120124 if (plotOwnFile ) {
@@ -148,7 +152,8 @@ createPlot <- function(dataSet, title, ySet, yTitle, baseColor, zSet, zTitle, vS
148152 processPDFbyGhostscript(pdfName )
149153 }
150154 else {
151- nextPageInPDFMetadata()
155+ # Already called by plotstd6():
156+ # nextPageInPDFMetadata()
152157 }
153158}
154159
@@ -162,58 +167,58 @@ createPlot <- function(dataSet, title, ySet, yTitle, baseColor, zSet, zTitle, vS
162167plotNodeStats <- function (inputData , nodeName )
163168{
164169 addBookmarkInPDFMetadata(1 , paste(sep = " " , " Node ''" , nodeName , " ''" ))
170+ data <- inputData %> % filter( Action != " Lost" )
165171
166172 # ====== Input/Output Rates ==============================================
167173 addBookmarkInPDFMetadata(2 , " Input/Output Rates" )
168- data <- subset(inputData , (inputData $ Action != " Lost" ))
169- createPlot(data , paste(sep = " " , " Bit Rate Sent/Received at Node ''" , nodeName , " ''" ),
174+ createPlot(data , paste(sep = " " , " Bit Rate Sent/Received on Node ''" , nodeName , " ''" ),
170175 (data $ RelBytes * 8 / 1000 ) / data $ Interval , " Bit Rate [Kbit/s]" , " blue4" ,
171176 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
172- createPlot(data , paste(sep = " " , " Byte Rate Sent/Received at Node ''" , nodeName , " ''" ),
177+ createPlot(data , paste(sep = " " , " Byte Rate Sent/Received on Node ''" , nodeName , " ''" ),
173178 (data $ RelBytes / 1000 ) / data $ Interval , " Byte Rate [KiB/s]" , " blue2" ,
174179 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
175- createPlot(data , paste(sep = " " , " Packet Rate Sent/Received at Node ''" , nodeName , " ''" ),
180+ createPlot(data , paste(sep = " " , " Packet Rate Sent/Received on Node ''" , nodeName , " ''" ),
176181 data $ RelPackets / data $ Interval , " Packet Rate [Packets/s]" , " green4" ,
177182 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
178- createPlot(data , paste(sep = " " , " Frame Rate Sent/Received at Node ''" , nodeName , " ''" ),
183+ createPlot(data , paste(sep = " " , " Frame Rate Sent/Received on Node ''" , nodeName , " ''" ),
179184 data $ RelFrames / data $ Interval , " Frame Rate [Frames/s]" , " yellow4" ,
180185 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
181186
182- # ====== Input/Output Absolute ===========================================
183- addBookmarkInPDFMetadata(2 , " Input/Output Absolute" )
184- data <- subset(inputData , TRUE ) # (inputData$Action != "Lost"))
185- createPlot(data , paste(sep = " " , " Bits Sent/Received at Node ''" , nodeName , " ''" ),
187+ # ====== Input/Output Volumes ============================================
188+ addBookmarkInPDFMetadata(2 , " Input/Output Volumes" )
189+ createPlot(data , paste(sep = " " , " Bits Sent/Received on Node ''" , nodeName , " ''" ),
186190 (data $ AbsBytes * 8 / 1000 ), " Bits [Kbit]" , " blue4" ,
187191 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
188- createPlot(data , paste(sep = " " , " Bytes Sent/Received at Node ''" , nodeName , " ''" ),
192+ createPlot(data , paste(sep = " " , " Bytes Sent/Received on Node ''" , nodeName , " ''" ),
189193 (data $ AbsBytes / 1000 ), " Bytes [KiB]" , " blue2" ,
190194 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
191- createPlot(data , paste(sep = " " , " Packets Sent/Received at Node ''" , nodeName , " ''" ),
195+ createPlot(data , paste(sep = " " , " Packets Sent/Received on Node ''" , nodeName , " ''" ),
192196 data $ AbsPackets , " Packets [1]" , " green4" ,
193197 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
194- createPlot(data , paste(sep = " " , " Frames Sent/Received at Node ''" , nodeName , " ''" ),
198+ createPlot(data , paste(sep = " " , " Frames Sent/Received on Node ''" , nodeName , " ''" ),
195199 data $ AbsFrames , " Frames [s]" , " yellow4" ,
196200 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
197201
198202 # ====== Jitter ==========================================================
199203 addBookmarkInPDFMetadata(2 , " Quality of Service" )
200- data <- subset(inputData , (inputData $ Action == " Received" ))
201- createPlot(data , paste(sep = " " , " Jitter at Node ''" , nodeName , " ''" ),
204+ data <- inputData %> % filter( Action == " Received" )
205+
206+ createPlot(data , paste(sep = " " , " Jitter on Node ''" , nodeName , " ''" ),
202207 data $ Jitter , " Jitter [ms]" , " gold4" ,
203208 data $ Description , " Flow{F}" , data $ Action , " Action{A}" )
204209
205210 # ====== Loss ============================================================
206- data <- subset( inputData , ( inputData $ Action == " Lost" ) )
207- createPlot(data , paste(sep = " " , " Bit Loss Rate at Node ''" , nodeName , " ''" ),
211+ data <- inputData % > % filter( Action == " Lost" )
212+ createPlot(data , paste(sep = " " , " Bit Loss Rate on Node ''" , nodeName , " ''" ),
208213 (data $ RelBytes * 8 / 1000 ) / data $ Interval , " Byte Loss Rate [Kbit/s]" , " red4" ,
209214 data $ Description , " Flow{F}" )
210- createPlot(data , paste(sep = " " , " Byte Loss Rate at Node ''" , nodeName , " ''" ),
215+ createPlot(data , paste(sep = " " , " Byte Loss Rate on Node ''" , nodeName , " ''" ),
211216 data $ RelBytes / data $ Interval , " Byte Loss Rate [KiB/s]" , " red2" ,
212217 data $ Description , " Flow{F}" )
213- createPlot(data , paste(sep = " " , " Packet Loss Rate at Node ''" , nodeName , " ''" ),
218+ createPlot(data , paste(sep = " " , " Packet Loss Rate on Node ''" , nodeName , " ''" ),
214219 data $ RelPackets / data $ Interval , " Packet Loss Rate [Packets/s]" , " red3" ,
215220 data $ Description , " Flow{F}" )
216- createPlot(data , paste(sep = " " , " Frame Loss Rate at Node ''" , nodeName , " ''" ),
221+ createPlot(data , paste(sep = " " , " Frame Loss Rate on Node ''" , nodeName , " ''" ),
217222 data $ RelFrames / data $ Interval , " Frame Loss Rate [Frames/s]" , " red1" ,
218223 data $ Description , " Flow{F}" )
219224}
@@ -246,16 +251,16 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
246251 (inputData $ FlowID == flowLevels [i ]) &
247252 (inputData $ IsActive == isActive ) & (inputData $ FlowID != - 1 ) &
248253 (inputData $ Action != " Lost" ))
249- createPlot(data , paste(sep = " " , " Bit Rate Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
254+ createPlot(data , paste(sep = " " , " Bit Rate Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
250255 (data $ RelBytes * 8 / 1000 ) / data $ Interval , " Bit Rate [Kbit/s]" , " blue4" ,
251256 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
252- createPlot(data , paste(sep = " " , " Byte Rate Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
257+ createPlot(data , paste(sep = " " , " Byte Rate Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
253258 (data $ RelBytes / 1000 ) / data $ Interval , " Byte Rate [KiB/s]" , " blue2" ,
254259 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
255- createPlot(data , paste(sep = " " , " Packet Rate Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
260+ createPlot(data , paste(sep = " " , " Packet Rate Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
256261 data $ RelPackets / data $ Interval , " Packet Rate [Packets/s]" , " green4" ,
257262 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
258- createPlot(data , paste(sep = " " , " Frame Rate Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
263+ createPlot(data , paste(sep = " " , " Frame Rate Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
259264 data $ RelFrames / data $ Interval , " Frame Rate [Frames/s]" , " yellow4" ,
260265 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
261266
@@ -265,16 +270,16 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
265270 (inputData $ FlowID == flowLevels [i ]) &
266271 (inputData $ IsActive == isActive ) & (inputData $ FlowID != - 1 ) )
267272 # & (inputData$Action != "Lost"))
268- createPlot(data , paste(sep = " " , " Bits Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
273+ createPlot(data , paste(sep = " " , " Bits Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
269274 (data $ AbsBytes * 8 / 1000 ), " Bits [Kbit]" , " blue4" ,
270275 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
271- createPlot(data , paste(sep = " " , " Bytes Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
276+ createPlot(data , paste(sep = " " , " Bytes Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
272277 (data $ AbsBytes / 1000 ), " Bytes [KiB]" , " blue2" ,
273278 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
274- createPlot(data , paste(sep = " " , " Packets Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
279+ createPlot(data , paste(sep = " " , " Packets Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
275280 data $ AbsPackets , " Packets [1]" , " green4" ,
276281 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
277- createPlot(data , paste(sep = " " , " Frames Sent/Received for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
282+ createPlot(data , paste(sep = " " , " Frames Sent/Received for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
278283 data $ AbsFrames , " Frames [s]" , " yellow4" ,
279284 data $ Action , " Action{A}" , data $ Description , " Flow{F}" , bookmarkLevel = 5 )
280285
@@ -284,11 +289,11 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
284289 (flowSummaryData $ FlowID == flowLevels [i ]) &
285290 (flowSummaryData $ IsActive == isActive ))
286291 if (length(data $ FlowID ) > 0 ) { # May be empty, if no packets have been sent in this direction!
287- createPlot(data , paste(sep = " " , " Per-Message Delay for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
292+ createPlot(data , paste(sep = " " , " Per-Message Delay for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
288293 data $ Delay , " Delay [ms]" , " orange2" ,
289294 c(), NA , # data$NodeName, "Node{N}",
290295 type = " p" , bookmarkLevel = 5 )
291- createPlot(data , paste(sep = " " , " Per-Message Jitter for Flow ''" , flowName , " '' at Node ''" , nodeName , " ''" ),
296+ createPlot(data , paste(sep = " " , " Per-Message Jitter for Flow ''" , flowName , " '' on Node ''" , nodeName , " ''" ),
292297 data $ Jitter , " Jitter [ms]" , " gold4" ,
293298 c(), NA , # data$NodeName, "Node{N}",
294299 type = " p" , bookmarkLevel = 5 )
@@ -307,15 +312,15 @@ plotQoSStatistics <- function(inputData, flowSummaryData, nodeName) {
307312plotColorMode <- 2 # == cmColor
308313plotOwnFile <- TRUE
309314plotFontFamily <- " Helvetica"
310- plotPointSize <- 18 # Use 22 for 10x10 plots
315+ plotPointSize <- 14
311316plotLegendSize <- 0.80
312317plotWidth <- - 1
313318plotHeight <- - 1
314319plotPaper <- " A4r" # Use "special" for manual values! Or: A4/A4r.
315320
316321
317322# ###### Command-Line Arguments #############################################
318- args = commandArgs(TRUE )
323+ args <- commandArgs(TRUE )
319324# print(args)
320325
321326for (i in 1 : length(args )) {
@@ -338,9 +343,9 @@ for(i in 1:length(args)) {
338343
339344# ====== Load input data ====================================================
340345source(configFile )
341- summaryData <- loadResults( summaryFile )
342- summaryData <- subset( summaryData , ( summaryData $ Interval > 0 ) ) # Avoids "divide by zero" on first entry
343- flowSummaryData <- loadResults( flowSummaryFile )
346+ summaryData <- data.table(read.csv( summaryFile , sep = " \t " )) % > %
347+ filter( Interval > 0 ) # Avoids "divide by zero" on first entry
348+ flowSummaryData <- data.table(read.csv( flowSummaryFile , sep = " \t " ) )
344349
345350setGlobalVariable(" gRuntime" , round(max(summaryData $ RelTime )))
346351cat(sep = " " , " Runtime=" , gRuntime , " \n " )
@@ -356,10 +361,10 @@ if(!plotOwnFile) {
356361
357362
358363# ====== Create plots for active and passive node ===========================
359- data <- subset( summaryData , ( summaryData $ IsActive == 1 ) & ( summaryData $ FlowID != - 1 ) )
364+ data <- summaryData % > % filter( IsActive == 1 , FlowID != - 1 )
360365plotNodeStats(data , NAME_ACTIVE_NODE )
361366
362- data <- subset( summaryData , ( summaryData $ IsActive == 0 ) & ( summaryData $ FlowID != - 1 ) )
367+ data <- summaryData % > % filter( IsActive == 0 , FlowID != - 1 )
363368plotNodeStats(data , NAME_PASSIVE_NODE )
364369
365370
@@ -382,7 +387,7 @@ if(!plotOwnFile) {
382387 stop(gettextf(" status %d in running command '%s'" , ret1 , cmd1 ))
383388 }
384389
385- # ------ Add PDF outlines and meta data ----------------------------------
390+ # ------ Add PDF outlines and metadata - ----------------------------------
386391 cmd2 <- paste(sep = " " , " pdfembedfonts " , pdfFilePrefix , " -TEMP2.pdf" , " " , pdfFilePrefix , " .pdf -optimize" ,
387392 " || mv " , pdfFilePrefix , " -TEMP2.pdf" , " " , pdfFilePrefix , " .pdf" )
388393 # cat(cmd2,"\n")
0 commit comments