diff options
Diffstat (limited to 'test/dumpfm/load_test.clj')
| -rw-r--r-- | test/dumpfm/load_test.clj | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/test/dumpfm/load_test.clj b/test/dumpfm/load_test.clj new file mode 100644 index 0000000..68eda68 --- /dev/null +++ b/test/dumpfm/load_test.clj @@ -0,0 +1,81 @@ +(ns dumpfm.load-test + (:import org.postgresql.ds.PGPoolingDataSource) + (:use clojure.contrib.json.read + clojure.contrib.json.write + clojure.contrib.seq-utils + clojure.contrib.sql + dumpfm.millstone)) + + +(let [db-host "localhost" + db-name "dumpfm" + db-user "postgres" + db-pass "root"] + (def *db* {:datasource (doto (new PGPoolingDataSource) + (.setServerName db-host) + (.setDatabaseName db-name) + (.setUser db-user) + (.setPassword db-pass) + (.setMaxConnections 3))})) + +(def userlist-query " +select u.nick, u.hash +from users u, messages m where u.user_id = m.user_id +group by u.nick, u.hash +having count(*) > 50 +order by count(*) desc +") + +(print "Fetching userlist: ") +(def userlist (time + (with-connection *db* + (with-query-results rs [userlist-query] + (doall rs))))) + + +(def sample-messages-query " +select content +from messages +order by random() +limit 100 +") + +(print "Fetching messages: ") +(def message-contents (time + (with-connection *db* + (with-query-results rs [sample-messages-query] + (doall (map :content rs)))))) + +(defn login-client [] + (let [user-info (rand-elt userlist) + params (select-keys user-info [:nick :hash])] + (do-setup-request! "/login" + :params params + :method "GET"))) + +(defn refresh [] + (let [params {:since (- (System/currentTimeMillis) 2000) + :room "test"}] + (do-request! "/refresh" + :params params + :method "GET") + (Thread/sleep 1000))) + +(defn post-msg [] + (let [params {:content (rand-elt message-contents) + :room "test"}] + (do-request! "/msg" + :params params + :method "POST"))) + +(def test-spec {:server "http://localhost:8080" + :clients 100 + :requests 10000 + :setup-func login-client + :funcs [[55 refresh] + [5 post-msg]] + :frequency 1 + }) + +(grind! test-spec) +(System/exit 0)
\ No newline at end of file |
