|
10 | 10 | #include <stdlib.h> |
11 | 11 | #include "sqlite3.h" |
12 | 12 |
|
| 13 | +#define PEERS 50 |
13 | 14 | #define DB_PATH "health-track.sqlite" |
14 | 15 | #define EXT_PATH "./dist/cloudsync" |
15 | 16 | #define ABORT_TEST abort_test: if (rc != SQLITE_OK) printf("Error: %s\n", sqlite3_errmsg(db)); if (db) sqlite3_close(db); return rc; |
@@ -135,34 +136,41 @@ int db_init (const char *db_path){ |
135 | 136 | if (rc != SQLITE_OK) goto abort_test; |
136 | 137 |
|
137 | 138 | rc = db_exec(db, "\ |
138 | | -CREATE TABLE IF NOT EXISTS users (\ |
139 | | - id TEXT PRIMARY KEY NOT NULL,\ |
140 | | - name TEXT UNIQUE NOT NULL DEFAULT ''\ |
141 | | -);\ |
142 | | -CREATE TABLE IF NOT EXISTS activities (\ |
143 | | - id TEXT PRIMARY KEY NOT NULL,\ |
144 | | - user_id TEXT,\ |
145 | | - km REAL,\ |
146 | | - bpm INTEGER,\ |
147 | | - time TEXT,\ |
148 | | - activity_type TEXT NOT NULL DEFAULT 'running',\ |
149 | | - FOREIGN KEY(user_id) REFERENCES users(id)\ |
150 | | -);\ |
151 | | -CREATE TABLE IF NOT EXISTS workouts (\ |
152 | | - id TEXT PRIMARY KEY NOT NULL,\ |
153 | | - assigned_user_id TEXT,\ |
154 | | - day_of_week TEXT,\ |
155 | | - km REAL,\ |
156 | | - max_time TEXT\ |
157 | | -);"); |
| 139 | + CREATE TABLE IF NOT EXISTS users (\ |
| 140 | + id TEXT PRIMARY KEY NOT NULL,\ |
| 141 | + name TEXT UNIQUE NOT NULL DEFAULT ''\ |
| 142 | + );\ |
| 143 | + CREATE TABLE IF NOT EXISTS activities (\ |
| 144 | + id TEXT PRIMARY KEY NOT NULL,\ |
| 145 | + user_id TEXT,\ |
| 146 | + km REAL,\ |
| 147 | + bpm INTEGER,\ |
| 148 | + time TEXT,\ |
| 149 | + activity_type TEXT NOT NULL DEFAULT 'running',\ |
| 150 | + FOREIGN KEY(user_id) REFERENCES users(id)\ |
| 151 | + );\ |
| 152 | + CREATE TABLE IF NOT EXISTS workouts (\ |
| 153 | + id TEXT PRIMARY KEY NOT NULL,\ |
| 154 | + assigned_user_id TEXT,\ |
| 155 | + day_of_week TEXT,\ |
| 156 | + km REAL,\ |
| 157 | + max_time TEXT\ |
| 158 | + );\ |
| 159 | + "); |
158 | 160 | if (rc != SQLITE_OK) goto abort_test; |
159 | 161 |
|
160 | 162 | ABORT_TEST |
161 | 163 | } |
162 | 164 |
|
163 | | -int test_init (const char *db_path) { |
| 165 | +int test_init (const char *db_path, int init) { |
| 166 | + int rc = SQLITE_OK; |
| 167 | + |
| 168 | + if(init){ |
| 169 | + rc = db_init(db_path); |
| 170 | + } |
| 171 | + |
164 | 172 | sqlite3 *db = NULL; |
165 | | - int rc = open_load_ext(db_path, &db); |
| 173 | + rc = open_load_ext(db_path, &db); |
166 | 174 |
|
167 | 175 | rc = db_exec(db, "SELECT cloudsync_init('users');"); if (rc != SQLITE_OK) goto abort_test; |
168 | 176 | rc = db_exec(db, "SELECT cloudsync_init('activities');"); if (rc != SQLITE_OK) goto abort_test; |
@@ -251,12 +259,19 @@ int main (void) { |
251 | 259 | printf("===========================================\n"); |
252 | 260 | test_report("Version Test:", rc); |
253 | 261 |
|
254 | | - //rc += db_init(DB_PATH); // fix first the schema hash comparison |
255 | | - rc += test_report("Init+Sync Test:", test_init(DB_PATH)); |
| 262 | + rc += db_init(DB_PATH); |
| 263 | + rc += test_report("Init+Sync Test:", test_init(DB_PATH, 0)); |
256 | 264 | rc += test_report("Is Enabled Test:", test_is_enabled(DB_PATH)); |
257 | 265 | rc += test_report("DB Version Test:", test_db_version(DB_PATH)); |
258 | 266 | rc += test_report("Enable Disable Test:", test_enable_disable(DB_PATH)); |
259 | 267 |
|
| 268 | + for(int i=0; i<PEERS; i++){ |
| 269 | + remove(DB_PATH); // clean previous db |
| 270 | + char description[32]; |
| 271 | + snprintf(description, sizeof(description), "%d/%d Peer Test", i+1, PEERS); |
| 272 | + rc += test_report(description, test_init(DB_PATH, 1)); |
| 273 | + } |
| 274 | + |
260 | 275 | remove(DB_PATH); // clean up the database file |
261 | 276 | printf("\n"); |
262 | 277 | return rc; |
|
0 commit comments