From 33f8d0a583dc835549fe7f6148fb9592e189d4e6 Mon Sep 17 00:00:00 2001
From: Lloyd Hilaiel <lloyd@hilaiel.com>
Date: Fri, 19 Aug 2011 14:59:46 +0300
Subject: [PATCH] initially create some number of users before applying
 probabilistic load

---
 performance/lib/reauth.js  |  2 ++
 performance/lib/signin.js  |  5 +----
 performance/lib/user_db.js |  2 +-
 performance/run.js         | 22 ++++++++++++++++++++--
 4 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/performance/lib/reauth.js b/performance/lib/reauth.js
index a7e8aa43a..211025c0d 100644
--- a/performance/lib/reauth.js
+++ b/performance/lib/reauth.js
@@ -45,5 +45,7 @@ exports.startFunc = function(cfg, cb) {
   // 3. in page javascript calls CSRF to get a CSRF token
   // 4. the RP will call /verify to verify a generated assertion
 
+  // XXX: implementing this will require actual crypto.
+
   setTimeout(function() { cb(true); }, 10); 
 };
diff --git a/performance/lib/signin.js b/performance/lib/signin.js
index 8dbb31980..5400d5791 100644
--- a/performance/lib/signin.js
+++ b/performance/lib/signin.js
@@ -36,12 +36,9 @@
 
 /* this file is the "signin" activity, which simulates the process of a user
  * who has used browserid before signing into browserid inside the dialog and
- * picking an idenity */
+ * picking an identity */
 
 exports.startFunc = function(cfg, cb) {
-  // A new user signing up for browserid looks like this in terms of
-  // network transactions:
-  //
   // 1. RP includes include.js 
   // 2. users' browser loads all code associated with dialog
   // 3. in page javascript calls CSRF to get a CSRF token
diff --git a/performance/lib/user_db.js b/performance/lib/user_db.js
index 90ac8a663..1e6f8ffd1 100644
--- a/performance/lib/user_db.js
+++ b/performance/lib/user_db.js
@@ -43,7 +43,7 @@ var secrets = require('../../libs/secrets.js');
 // the grandiose database
 var users = [ ];
 
-exports.numUsers = function() { return users.length; }
+exports.num = function() { return users.length; }
 
 function genEmail() {
   return secrets.generate(8) + "@" + secrets.generate(8) + "." + secrets.generate(3);
diff --git a/performance/run.js b/performance/run.js
index 470b143b1..e7a0a537f 100755
--- a/performance/run.js
+++ b/performance/run.js
@@ -259,5 +259,23 @@ function poll() {
   iterations++;
 }
 
-console.log("Average active users simulated over the last 1s/5s/60s:");
-setTimeout(poll, 1);
+// always start out by creating a bunch of users
+var NUM_INITIAL_USERS = 50;
+
+console.log("To start, let's create " + NUM_INITIAL_USERS + " users.  A moment please.");
+
+const userdb = require("./lib/user_db.js");
+var createUser = require("./lib/signup.js").startFunc;
+var created = 0;
+for (var i = 0; i < NUM_INITIAL_USERS; i++) {
+  createUser(configuration, function(rv) {
+    if (!rv) {
+      console.log("failed to create initial users! tragedy!  run away!");
+      process.exit(1);
+    }
+    if (++created == NUM_INITIAL_USERS) {
+      console.log("Average active users simulated over the last 1s/5s/60s:");
+      poll();
+    }
+  });
+}
-- 
GitLab