X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=lttv%2Flttv%2Fsync%2Fsync_chain_unittest.c;h=652c379752e71ed05b13e635c212c24688a01576;hb=0a87ec9a018cc9731ce3b04309eaa4dcc77df6d2;hp=9b4b869c7f32bac3b622ac71a115e05050b7aaee;hpb=48b641c1f6320eca569b2894f253d9d815250d45;p=lttv.git diff --git a/lttv/lttv/sync/sync_chain_unittest.c b/lttv/lttv/sync/sync_chain_unittest.c index 9b4b869c..652c3797 100644 --- a/lttv/lttv/sync/sync_chain_unittest.c +++ b/lttv/lttv/sync/sync_chain_unittest.c @@ -1,19 +1,18 @@ /* This file is part of the Linux Trace Toolkit viewer - * Copyright (C) 2009 Benjamin Poirier + * Copyright (C) 2009, 2010 Benjamin Poirier * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License Version 2 as - * published by the Free Software Foundation; + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the License, or (at + * your option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . */ #define _GNU_SOURCE @@ -35,6 +34,13 @@ #include #include +#include "event_processing_text.h" +#include "event_matching_tcp.h" +#include "event_matching_broadcast.h" +#include "event_matching_distributor.h" +#include "event_analysis_chull.h" +#include "event_analysis_linreg.h" +#include "event_analysis_eval.h" #include "sync_chain.h" @@ -94,10 +100,30 @@ int main(const int argc, char* const argv[]) struct timeval startTime, endTime; struct rusage startUsage, endUsage; GList* result; + GArray* factors; int retval; bool stats; const char* testCaseName; GString* analysisModulesNames; + unsigned int id; + AllFactors* allFactors; + + /* + * Initialize event modules + * Call the "constructor" or initialization function of each event module + * so it can register itself. This must be done before elements in + * processingModules, matchingModules, analysisModules or moduleOptions + * are accessed. + */ + registerProcessingText(); + + registerMatchingTCP(); + registerMatchingBroadcast(); + registerMatchingDistributor(); + + registerAnalysisCHull(); + registerAnalysisLinReg(); + registerAnalysisEval(); // Initialize data structures syncState= malloc(sizeof(SyncState)); @@ -137,7 +163,7 @@ int main(const int argc, char* const argv[]) else { syncState->stats= false; - g_log_set_handler(NULL, G_LOG_LEVEL_DEBUG, nullLog, NULL); + id= g_log_set_handler(NULL, G_LOG_LEVEL_DEBUG, nullLog, NULL); } if (optionSyncGraphs.present) @@ -183,7 +209,9 @@ int main(const int argc, char* const argv[]) syncState->analysisModule->initAnalysis(syncState); // Process traceset - syncState->processingModule->finalizeProcessing(syncState); + allFactors= syncState->processingModule->finalizeProcessing(syncState); + factors= reduceFactors(allFactors); + freeAllFactors(allFactors); // Write graphs file if (syncState->graphsStream) @@ -197,9 +225,19 @@ int main(const int argc, char* const argv[]) } // Print statistics - if (syncState->stats) + if (optionSyncStats.present) { + unsigned int i; + printStats(syncState); + + printf("Resulting synchronization factors:\n"); + for (i= 0; i < factors->len; i++) + { + Factors* traceFactors= &g_array_index(factors, Factors, i); + printf("\ttrace %u drift= %g offset= %g\n", i, + traceFactors->drift, traceFactors->offset); + } } // Destroy modules and clean up @@ -227,12 +265,17 @@ int main(const int argc, char* const argv[]) endUsage.ru_stime.tv_usec); } + if (!optionSyncStats.present) + { + g_log_remove_handler(NULL, id); + } + return EXIT_SUCCESS; } /* - * Read program arguments dans update ModuleOptions structures + * Read program arguments and update ModuleOptions structures * * Args: * argc, argv: standard argument arrays