From e62fe22071e1df66cdd1c470cff0071de49c72ef Mon Sep 17 00:00:00 2001 From: Tom Moguljak Date: Tue, 17 Sep 2024 12:13:39 +0200 Subject: [PATCH] Premier commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Côme Thuret --- Optimisation/stats.c | 256 +++++++++++++++++++++++ compte_rendu.md | 73 +++++++ src/Capture_decran_2024-09-17_115202.png | Bin 0 -> 64520 bytes 3 files changed, 329 insertions(+) create mode 100644 Optimisation/stats.c create mode 100644 compte_rendu.md create mode 100644 src/Capture_decran_2024-09-17_115202.png diff --git a/Optimisation/stats.c b/Optimisation/stats.c new file mode 100644 index 0000000..357cfa1 --- /dev/null +++ b/Optimisation/stats.c @@ -0,0 +1,256 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#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 */ + while_stat(getline(&read_line,&n,fd)); + + /* free allocated memory */ + regfree(p_reg); + free(p_reg); + free(pmatch); + if(read_line != NULL){ + free(read_line); + } + + (void) fclose(fd); + + /* ping may be null, then it must mean that the ping request was lost */ + return ping; +} + +void while_stat(int test){ + + if(read_line == NULL){ + return; + } + + /* 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_eo; + 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; + return; + } + + /* 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; + return; + } + + free(read_line); + read_line = NULL; + n = 0; + + if (test != -1){ + while_stat(test); + } +} + +/* + -- write_ping_log -- + Desc : + Function which write a given ping in log file + In-param : + new_ping : string value of a ping + Out-param : + None + Return value : + None +*/ +void write_ping_log(char* new_ping){ + + /* Variables */ + FILE* fd; + + /* Open log file */ + fd = fopen("/var/log/ping-report/all-ping.log","a+"); + + if(fd != NULL){ + if(new_ping == NULL){ + new_ping = (char *) malloc(5*sizeof(char)); + if(new_ping == NULL){ + (void) fclose(fd); + return; + } + (void) snprintf(new_ping,5*sizeof(char),"LOSS"); + } + (void) fwrite(new_ping, sizeof(char), strlen(new_ping), fd); + (void) fclose(fd); + }else{ + perror("write ping : "); + } + + free(new_ping); +} + +/* + -- 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){ + /* Stats variables */ + 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++; + /* 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; + } + } + free(read_line); + n = 0; + } + + /* 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); + } + + }else{ + perror("stats : "); + } +} + + diff --git a/compte_rendu.md b/compte_rendu.md new file mode 100644 index 0000000..7533333 --- /dev/null +++ b/compte_rendu.md @@ -0,0 +1,73 @@ +# Compte rendu TD2 : + +## fichier *daemon.c* + +**create_daemon** +
+```M = 4 ``` + +**ping_request** +
+```M = 2``` + +**send_check** +
+```M = 4``` + +**check_keep_working** +
+```M = 4``` + +**daemon_work** +
+```M = 3``` + +## fichier *db-sqlite.c* + +**db_connect** +
+```M = 1``` + +**db_disconnect** +
+```M = 1``` + +**insert_hourly_report** +
+```M = 1``` + +## fichier *ping-report.c* + +**main** +
+```M = 5``` + +## fichier *stats.c* + +**get_ping_from_temp_log** +
+```M = 15``` + +Graph : +
+ + +**write_ping_log** +
+```M = 4``` + +**set_stats_ping** +
+```M =``` + +## fichier *ping-report.c* + +**write_pid_file** +
+```M = 2``` + +**remove_file** +
+```M = 1``` + +## Optimisation \ No newline at end of file diff --git a/src/Capture_decran_2024-09-17_115202.png b/src/Capture_decran_2024-09-17_115202.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8fda7a80ad10c51d4a0e0806f4ef861916b5d7 GIT binary patch literal 64520 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 literal 0 HcmV?d00001