fin de la factorisation
This commit is contained in:
parent
9905d215ca
commit
2500c54883
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
|
||||||
|
}
|
@ -1,132 +0,0 @@
|
|||||||
#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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
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