summaryrefslogtreecommitdiff
path: root/destroy-all-test-users
diff options
context:
space:
mode:
Diffstat (limited to 'destroy-all-test-users')
-rwxr-xr-xdestroy-all-test-users64
1 files changed, 64 insertions, 0 deletions
diff --git a/destroy-all-test-users b/destroy-all-test-users
new file mode 100755
index 0000000..b578f83
--- /dev/null
+++ b/destroy-all-test-users
@@ -0,0 +1,64 @@
+#!/usr/bin/ruby
+
+#
+# Clean up cruft left over by bad tests.
+#
+# Removes all 'test_user_x' users from the users db, along with the
+# corresponding indentities and storage db.
+#
+
+require 'couchrest'
+
+users_db_name = 'users'
+#user_db_name = 'tmp_users'
+identities_db_name = 'identities'
+
+netrc = File.read('/root/.netrc').split(' ')
+auth = "%{username}:%{password}@" % {username: netrc[3], password: netrc[5]}
+server = CouchRest::Server.new("http://#{auth}localhost:5984")
+users_db = server.database(users_db_name)
+identities_db = server.database(identities_db_name)
+
+records = users_db.view('User/by_login', :reduce => false, :startkey => 'test_user_', :endkey => 'test_user_'+"\u{fff}")['rows']
+records.each do |record|
+ user_id = record['id']
+ username = record['key']
+ tries = 0
+ begin
+ begin
+ doc = users_db.get(user_id)
+ users_db.delete_doc(doc)
+ puts "deleted #{users_db.name}/#{user_id} (#{username})"
+ rescue RestClient::ResourceNotFound
+ end
+ begin
+ storage_db = server.database("user-" + user_id)
+ storage_db.delete!
+ puts " deleted #{storage_db.name}"
+ rescue RestClient::ResourceNotFound
+ end
+ identities_db.view('Identity/by_user_id', :reduce => false, :startkey => user_id, :endkey => user_id)['rows'].each do |row|
+ begin
+ doc = identities_db.get(row['id'])
+ identities_db.delete_doc(doc)
+ puts " deleted #{identities_db.name}/#{row['id']}"
+ rescue RestClient::ResourceNotFound
+ end
+ end
+ rescue RestClient::RequestTimeout
+ tries += 1
+ if tries < 10
+ puts "Got timeout, retrying"
+ sleep 10
+ retry
+ else
+ puts "Retry limit reached"
+ exit(1)
+ end
+ end
+end
+
+users_db.compact!
+identities_db.compact!
+
+puts "DONE" \ No newline at end of file