Skip to content

Commit a64671c

Browse files
committed
Fixed sim not compiling when provDB is disabled
When provDB is disabled, sim now writes provenance data to disk in the same way that the actual driver does
1 parent 056bd88 commit a64671c

4 files changed

Lines changed: 32 additions & 1 deletion

File tree

sim/include/sim/ad.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include<chimbuko/ad/ADEvent.hpp>
77
#include<chimbuko/ad/ADCounter.hpp>
88
#include<chimbuko/ad/ADOutlier.hpp>
9+
#include<chimbuko/ad/ADio.hpp>
910
#include<map>
1011

1112
namespace chimbuko_sim{
@@ -29,7 +30,11 @@ namespace chimbuko_sim{
2930
int m_rid;
3031
ADNormalEventProvenance m_normal_events;
3132
ADMetadataParser m_metadata;
33+
#ifdef ENABLE_PROVDB
3234
std::unique_ptr<ADProvenanceDBclient> m_pdb_client;
35+
#else
36+
std::unique_ptr<ADio> m_prov_io; /**< Write to disk if provDB not in use */
37+
#endif
3338
ADThreadNetClient *m_net_client; /**< The local net client. Only activated if an AD algorithm is used */
3439
ADOutlier* m_outlier; /**< The local outlier algorithm instance, if used*/
3540
public:
@@ -63,7 +68,9 @@ namespace chimbuko_sim{
6368
if(m_net_client) delete m_net_client;
6469
}
6570

71+
#ifdef ENABLE_PROVDB
6672
ADProvenanceDBclient &getProvDBclient(){ return *m_pdb_client; }
73+
#endif
6774

6875
/**
6976
* @brief Add a function execution on a specific thread

sim/include/sim/provdb.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include <chimbuko_config.h>
2+
#ifdef ENABLE_PROVDB
23
#include <sonata/Admin.hpp>
34
#include <sonata/Provider.hpp>
45
#include<chimbuko/ad/ADProvenanceDBclient.hpp>
@@ -32,3 +33,4 @@ namespace chimbuko_sim{
3233
inline provDBsim & getProvDB(){ static provDBsim pdb(nshards()); return pdb; }
3334

3435
};
36+
#endif

sim/src/ad.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ ADsim::ADsim(ADsim &&r):
2828
m_rid(r.m_rid),
2929
m_normal_events(std::move(r.m_normal_events)),
3030
m_metadata(std::move(r.m_metadata)),
31+
#ifdef ENABLE_PROVDB
3132
m_pdb_client(std::move(r.m_pdb_client)),
33+
#else
34+
m_prov_io(std::move(r.m_prov_io)),
35+
#endif
3236
m_outlier(r.m_outlier),
3337
m_net_client(r.m_net_client)
3438
{
@@ -41,9 +45,16 @@ void ADsim::init(int window_size, int pid, int rid, unsigned long program_start,
4145
m_window_size = window_size;
4246
m_pid = pid;
4347
m_rid = rid;
48+
#ifdef ENABLE_PROVDB
4449
m_pdb_client.reset(new ADProvenanceDBclient(rid));
4550
m_pdb_client->setEnableHandshake(false);
4651
m_pdb_client->connect(getProvDB().getAddr(), getProvDB().getNshards());
52+
#else
53+
m_prov_io.reset(new ADio(m_pid, m_rid));
54+
m_prov_io->setDispatcher();
55+
m_prov_io->setDestructorThreadWaitTime(0); //don't know why we would need a wait
56+
m_prov_io->setOutputPath(".");
57+
#endif
4758
m_program_start = program_start;
4859
m_step_freq = step_freq;
4960
m_largest_step = 0;
@@ -206,11 +217,18 @@ void ADsim::step(const unsigned long step){
206217
ADAnomalyProvenance::getProvenanceEntries(anomalous_events, normal_events, m_normal_events,
207218
anom, step, step_start_time, step_end_time, m_window_size,
208219
params, evmap, counters, m_metadata);
220+
#ifdef ENABLE_PROVDB
209221
//Send to provdb
210222
if(anomalous_events.size() > 0)
211223
m_pdb_client->sendMultipleData(anomalous_events, ProvenanceDataType::AnomalyData);
212224
if(normal_events.size() > 0)
213225
m_pdb_client->sendMultipleData(normal_events, ProvenanceDataType::NormalExecData);
226+
#else
227+
if(anomalous_events.size() > 0)
228+
m_prov_io->writeJSON(anomalous_events, step, "anomalies");
229+
if(normal_events.size() > 0)
230+
m_prov_io->writeJSON(normal_events, step, "normalexecs");
231+
#endif
214232
}
215233

216234

sim/src/provdb.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
#include<chimbuko/util/string.hpp>
21
#include<sim/provdb.hpp>
2+
#ifdef ENABLE_PROVDB
3+
#include<chimbuko/util/string.hpp>
4+
35

46
using namespace chimbuko;
57
using namespace chimbuko_sim;
@@ -45,3 +47,5 @@ provDBsim::~provDBsim(){
4547
delete admin;
4648
delete provider;
4749
}
50+
51+
#endif

0 commit comments

Comments
 (0)