Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
21dcf07b31 | |||
bf39270efa | |||
b32097e117 | |||
2500c54883 | |||
9905d215ca | |||
1343760946 |
18
.vscode/c_cpp_properties.json
vendored
Normal file
18
.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "windows-gcc-x64",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"compilerPath": "gcc",
|
||||
"cStandard": "${default}",
|
||||
"cppStandard": "${default}",
|
||||
"intelliSenseMode": "windows-gcc-x64",
|
||||
"compilerArgs": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
24
.vscode/launch.json
vendored
Normal file
24
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "C/C++ Runner: Debug Session",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"externalConsole": true,
|
||||
"cwd": "c:/Users/yanis/TD2_DEV51_Qualite_Algo",
|
||||
"program": "c:/Users/yanis/TD2_DEV51_Qualite_Algo/build/Debug/outDebug",
|
||||
"MIMode": "gdb",
|
||||
"miDebuggerPath": "gdb",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
59
.vscode/settings.json
vendored
Normal file
59
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"C_Cpp_Runner.cCompilerPath": "gcc",
|
||||
"C_Cpp_Runner.cppCompilerPath": "g++",
|
||||
"C_Cpp_Runner.debuggerPath": "gdb",
|
||||
"C_Cpp_Runner.cStandard": "",
|
||||
"C_Cpp_Runner.cppStandard": "",
|
||||
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",
|
||||
"C_Cpp_Runner.useMsvc": false,
|
||||
"C_Cpp_Runner.warnings": [
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Wpedantic",
|
||||
"-Wshadow",
|
||||
"-Wformat=2",
|
||||
"-Wcast-align",
|
||||
"-Wconversion",
|
||||
"-Wsign-conversion",
|
||||
"-Wnull-dereference"
|
||||
],
|
||||
"C_Cpp_Runner.msvcWarnings": [
|
||||
"/W4",
|
||||
"/permissive-",
|
||||
"/w14242",
|
||||
"/w14287",
|
||||
"/w14296",
|
||||
"/w14311",
|
||||
"/w14826",
|
||||
"/w44062",
|
||||
"/w44242",
|
||||
"/w14905",
|
||||
"/w14906",
|
||||
"/w14263",
|
||||
"/w44265",
|
||||
"/w14928"
|
||||
],
|
||||
"C_Cpp_Runner.enableWarnings": true,
|
||||
"C_Cpp_Runner.warningsAsError": false,
|
||||
"C_Cpp_Runner.compilerArgs": [],
|
||||
"C_Cpp_Runner.linkerArgs": [],
|
||||
"C_Cpp_Runner.includePaths": [],
|
||||
"C_Cpp_Runner.includeSearch": [
|
||||
"*",
|
||||
"**/*"
|
||||
],
|
||||
"C_Cpp_Runner.excludeSearch": [
|
||||
"**/build",
|
||||
"**/build/**",
|
||||
"**/.*",
|
||||
"**/.*/**",
|
||||
"**/.vscode",
|
||||
"**/.vscode/**"
|
||||
],
|
||||
"C_Cpp_Runner.useAddressSanitizer": false,
|
||||
"C_Cpp_Runner.useUndefinedSanitizer": false,
|
||||
"C_Cpp_Runner.useLeakSanitizer": false,
|
||||
"C_Cpp_Runner.showCompilationTime": false,
|
||||
"C_Cpp_Runner.useLinkTimeOptimization": false,
|
||||
"C_Cpp_Runner.msvcSecureNoWarnings": false
|
||||
}
|
1112
TD2_Diagramme.drawio
Normal file
1112
TD2_Diagramme.drawio
Normal file
File diff suppressed because it is too large
Load Diff
BIN
TD2_diagramme.drawio.pdf
Normal file
BIN
TD2_diagramme.drawio.pdf
Normal file
Binary file not shown.
BIN
dbsqlite-utils_diagramme.pdf
Normal file
BIN
dbsqlite-utils_diagramme.pdf
Normal file
Binary file not shown.
@ -115,7 +115,7 @@
|
||||
free(pmatch);
|
||||
if(read_line != NULL){
|
||||
free(read_line);
|
||||
}
|
||||
}c
|
||||
|
||||
(void) fclose(fd);
|
||||
|
||||
|
258
ping-report/src/stats_factorise.c
Normal file
258
ping-report/src/stats_factorise.c
Normal file
@ -0,0 +1,258 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <regex.h>
|
||||
|
||||
#include "../include/utils.h"
|
||||
#include "../include/stats.h"
|
||||
#include "../include/db-sqlite.h"
|
||||
|
||||
/*
|
||||
-- get_ping_from_temp_log --
|
||||
Desc :
|
||||
Function which get the ping from a temp log containing the last ping did by the program
|
||||
In-param :
|
||||
None
|
||||
Out-param :
|
||||
None
|
||||
Return value :
|
||||
Ping value as a string or NULL if an error occured
|
||||
*/
|
||||
/*@null@*/ char *get_ping_from_temp_log()
|
||||
{
|
||||
|
||||
/* Variables */
|
||||
FILE *fd = NULL;
|
||||
char *read_line = NULL;
|
||||
size_t n = 0;
|
||||
size_t nmatch = 2;
|
||||
regex_t *p_reg;
|
||||
regmatch_t *pmatch;
|
||||
char *ping = NULL;
|
||||
int start;
|
||||
int end;
|
||||
size_t size_ping;
|
||||
|
||||
/* regex struct memory allocation */
|
||||
p_reg = (regex_t *)malloc(sizeof(*p_reg));
|
||||
if (p_reg == NULL)
|
||||
{
|
||||
return ping; /* NULL */
|
||||
}
|
||||
|
||||
/* Open ping log file */
|
||||
fd = fopen("/var/log/ping-report/last-ping.log", "r");
|
||||
if (fd == NULL)
|
||||
{
|
||||
free(p_reg);
|
||||
return ping; /* NULL */
|
||||
}
|
||||
|
||||
/* Construct regex to get ping from log file */
|
||||
if (regcomp(p_reg, "time=(.*) ms", REG_EXTENDED) != 0)
|
||||
{
|
||||
if (p_reg != NULL)
|
||||
{
|
||||
free(p_reg);
|
||||
}
|
||||
(void)fclose(fd);
|
||||
return ping; /* NULL */
|
||||
}
|
||||
|
||||
/* match info memory allocation */
|
||||
pmatch = malloc(sizeof(*pmatch) * nmatch);
|
||||
if (pmatch == NULL)
|
||||
{
|
||||
(void)fclose(fd);
|
||||
regfree(p_reg);
|
||||
free(p_reg);
|
||||
return ping; /* NULL */
|
||||
}
|
||||
|
||||
/* Read file */
|
||||
|
||||
whilegetline(getline(&read_line, &n, fd))
|
||||
|
||||
/* free allocated memory */
|
||||
regfree(p_reg);
|
||||
free(p_reg);
|
||||
free(pmatch);
|
||||
if (read_line != NULL)
|
||||
{
|
||||
free(read_line);
|
||||
}
|
||||
c
|
||||
|
||||
(void) fclose(fd);
|
||||
|
||||
/* ping may be null, then it must mean that the ping request was lost */
|
||||
return ping;
|
||||
}
|
||||
|
||||
void whilegetline(int gegetline)
|
||||
{
|
||||
while (gegetline = !-1)
|
||||
{
|
||||
if (read_line == NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* Exec regex to find ping */
|
||||
|
||||
if (regexec(p_reg, read_line, nmatch, pmatch, 0) == 0)
|
||||
{
|
||||
|
||||
/* Extract ping position from read line */
|
||||
start = (int)pmatch[1].rm_so;
|
||||
end = (int)pmatch[1].rm_egetlineo;
|
||||
size_ping = (size_t)(end - start);
|
||||
|
||||
/* ping string memory allocation */
|
||||
ping = malloc(sizeof(char) * (size_ping + 2));
|
||||
if (ping == NULL)
|
||||
{
|
||||
free(read_line);
|
||||
read_line = NULL;
|
||||
n = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Create ping string */
|
||||
(void)strncpy(ping, &read_line[start], size_ping);
|
||||
ping[size_ping] = '\n';
|
||||
ping[size_ping + 1] = '\0';
|
||||
|
||||
/* Free memory */
|
||||
free(read_line);
|
||||
read_line = NULL;
|
||||
n = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
free(read_line);
|
||||
read_line = NULL;
|
||||
n = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
-- set_stats_ping --
|
||||
Desc :
|
||||
Function which calculate statistics about ping values, from log file.
|
||||
In-param :
|
||||
None
|
||||
Out-param :
|
||||
None
|
||||
Return value :
|
||||
None
|
||||
*/
|
||||
void set_stats_ping()
|
||||
{
|
||||
|
||||
/* Variables */
|
||||
FILE *fd;
|
||||
/* Open log file */
|
||||
fd = fopen("/var/log/ping-report/all-ping.log", "r");
|
||||
|
||||
if (fd != NULL)
|
||||
{
|
||||
whileSet_stats_ping();
|
||||
}
|
||||
else
|
||||
{
|
||||
perror("stats : ");
|
||||
}
|
||||
}
|
||||
|
||||
void whileSet_stats_ping()
|
||||
{
|
||||
double ping = 0.0;
|
||||
double sum = 0.0;
|
||||
double max = 0.0;
|
||||
double min = 100.0;
|
||||
double mean = 0.0;
|
||||
int nb_high = 0;
|
||||
int nb_loss = 0;
|
||||
int nb_ping = 0;
|
||||
char *read_line = NULL;
|
||||
size_t n = 0;
|
||||
|
||||
/* Read file */
|
||||
while (getline(&read_line, &n, fd) != -1)
|
||||
{
|
||||
|
||||
/* Check getline error */
|
||||
if (read_line == NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check if the ping is flagged as LOSS */
|
||||
if (strcmp(read_line, "LOSS") == 0)
|
||||
{
|
||||
nb_loss++;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Evaluate the ping as a double */
|
||||
ping = strtod(read_line, NULL);
|
||||
/* Test null ping */
|
||||
if (ping < 0.1)
|
||||
{
|
||||
/* Ignore null ping */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Number of ping readed (for mean calculation) */
|
||||
nb_ping++;
|
||||
evaluatePing(ping,&max,&min,&nb_high,&sum);
|
||||
|
||||
}
|
||||
}
|
||||
free(read_line);
|
||||
n = 0;
|
||||
}
|
||||
meanCaclulatoion(max,min,nb_high,nb_loss,nb_ping);
|
||||
|
||||
}
|
||||
|
||||
void evaluatePing(double ping , double *max ,double *min ,int *nb_high, double *sum)
|
||||
{
|
||||
|
||||
/* Max ping */
|
||||
if (ping > *max)
|
||||
{
|
||||
*max = ping;
|
||||
}
|
||||
/* Min ping */
|
||||
if (ping < *min)
|
||||
{
|
||||
*min = ping;
|
||||
}
|
||||
/* Number of ping above 100 ms */
|
||||
if (ping > 100.0)
|
||||
{
|
||||
(*nb_high)++;
|
||||
}
|
||||
/* Sum (for mean calculation) */
|
||||
*sum += ping;
|
||||
}
|
||||
|
||||
void meanCaclulatoion( double max, double min, int nb_high, int nb_loss, int nb_ping,char* read_line)
|
||||
{
|
||||
/* Mean calculation */
|
||||
mean = sum / (double)nb_ping;
|
||||
(void)fclose(fd);
|
||||
|
||||
insert_hourly_report(mean, max, min, nb_high, nb_loss, nb_ping);
|
||||
|
||||
if (read_line != NULL)
|
||||
{
|
||||
free(read_line);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user