| rev | line source | 
| bsw/jbe@0 | 1 #!/usr/bin/env lua | 
| bsw/jbe@0 | 2 | 
| bsw/jbe@0 | 3 member_count = 10000 | 
| bsw/jbe@0 | 4 area_count = 24 | 
| bsw/jbe@0 | 5 issue_count = 1000 | 
| bsw/jbe@0 | 6 policy_count = 3  -- do not change | 
| bsw/jbe@0 | 7 | 
| bsw/jbe@0 | 8 function write(...) | 
| bsw/jbe@0 | 9   io.stdout:write(...) | 
| bsw/jbe@0 | 10 end | 
| bsw/jbe@0 | 11 function writeln(...) | 
| bsw/jbe@0 | 12   write(...) | 
| bsw/jbe@0 | 13   write("\n") | 
| bsw/jbe@0 | 14 end | 
| bsw/jbe@0 | 15 | 
| bsw/jbe@0 | 16 math.randomseed(os.time()) | 
| bsw/jbe@0 | 17 | 
| bsw/jbe@0 | 18 writeln('BEGIN;') | 
| bsw/jbe@0 | 19 | 
| bsw/jbe@0 | 20 for i = 2, member_count do | 
| bsw/jbe@0 | 21   writeln('INSERT INTO "member" ("login", "name", "ident_number") VALUES (', "'testuser", i, "', 'Benutzer #", i, "', 'TEST", i, "');") | 
| bsw/jbe@0 | 22 end | 
| bsw/jbe@0 | 23 | 
| bsw/jbe@0 | 24 for i = 1, member_count do | 
| bsw/jbe@0 | 25   local is_linked = {} | 
| bsw/jbe@0 | 26   while math.random(4) > 1 do | 
| bsw/jbe@0 | 27     local k = math.random(member_count) | 
| bsw/jbe@0 | 28     if not is_linked[k] then | 
| bsw/jbe@0 | 29       local public = math.random(2) == 1 and "TRUE" or "FALSE" | 
| bsw/jbe@0 | 30       writeln('INSERT INTO "contact" ("member_id", "other_member_id", "public") VALUES (', i, ", ", k, ", ", public, ");") | 
| bsw/jbe@0 | 31       is_linked[k] = true | 
| bsw/jbe@0 | 32     end | 
| bsw/jbe@0 | 33   end | 
| bsw/jbe@0 | 34 end | 
| bsw/jbe@0 | 35 | 
| bsw/jbe@0 | 36 for i = 2, area_count do | 
| bsw/jbe@0 | 37   writeln('INSERT INTO "area" ("name") VALUES (', "'Area #", i, "');") | 
| bsw/jbe@0 | 38 end | 
| bsw/jbe@0 | 39 | 
| bsw/jbe@0 | 40 local memberships = {} | 
| bsw/jbe@0 | 41 | 
| bsw/jbe@0 | 42 for i = 1, area_count do | 
| bsw/jbe@0 | 43   memberships[i] = {} | 
| bsw/jbe@0 | 44   for j = 1, member_count do | 
| bsw/jbe@0 | 45     if math.random(4) == 1 then | 
| bsw/jbe@0 | 46       memberships[i][j] = true | 
| bsw/jbe@0 | 47       local autoreject = math.random(2) == 1 and "TRUE" or "FALSE" | 
| bsw/jbe@0 | 48       writeln('INSERT INTO "membership" ("member_id", "area_id", "autoreject") VALUES (', j, ", ", i, ", ", autoreject, ");") | 
| bsw/jbe@0 | 49     end | 
| bsw/jbe@0 | 50   end | 
| bsw/jbe@0 | 51 end | 
| bsw/jbe@0 | 52 | 
| bsw/jbe@0 | 53 do | 
| bsw/jbe@0 | 54   local issue_initiative_count = {} | 
| bsw/jbe@0 | 55   local initiative_draft_count = {} | 
| bsw/jbe@0 | 56   local initiative_idx = 1 | 
| bsw/jbe@0 | 57   local draft_count = 0 | 
| bsw/jbe@0 | 58   for i = 1, issue_count do | 
| bsw/jbe@0 | 59     local area = math.random(area_count) | 
| bsw/jbe@0 | 60     writeln('INSERT INTO "issue" ("area_id", "policy_id") VALUES (', area, ", ", math.random(policy_count), ");") | 
| bsw/jbe@0 | 61     issue_initiative_count[i] = 1 | 
| bsw/jbe@0 | 62     while math.random(3) > 1 do | 
| bsw/jbe@0 | 63       issue_initiative_count[i] = issue_initiative_count[i] + 1 | 
| bsw/jbe@0 | 64     end | 
| bsw/jbe@0 | 65     for j = 1, issue_initiative_count[i] do | 
| bsw/jbe@0 | 66       writeln('INSERT INTO "initiative" ("issue_id", "name") VALUES (', i, ", 'Initiative #", initiative_idx, "');") | 
| bsw/jbe@0 | 67       initiative_draft_count[i] = 1 | 
| bsw/jbe@0 | 68       while math.random(4) > 1 do | 
| bsw/jbe@0 | 69         initiative_draft_count[i] = initiative_draft_count[i] + 1 | 
| bsw/jbe@0 | 70       end | 
| bsw/jbe@0 | 71       local initiators = {} | 
| bsw/jbe@0 | 72       local is_used = {} | 
| bsw/jbe@0 | 73       repeat | 
| bsw/jbe@0 | 74         local member = math.random(member_count) | 
| bsw/jbe@0 | 75         if not is_used[member] then | 
| bsw/jbe@0 | 76           initiators[#initiators+1] = member | 
| bsw/jbe@0 | 77           is_used[member] = true | 
| bsw/jbe@0 | 78         end | 
| bsw/jbe@0 | 79       until math.random(2) == 1 | 
| bsw/jbe@0 | 80       for k = 1, initiative_draft_count[i] do | 
| bsw/jbe@0 | 81         draft_count = draft_count + 1 | 
| bsw/jbe@0 | 82         writeln('INSERT INTO "draft" ("initiative_id", "author_id", "content") VALUES (', initiative_idx, ", ", initiators[math.random(#initiators)], ", 'Lorem ipsum... (#", draft_count, ")');") | 
| bsw/jbe@0 | 83       end | 
| bsw/jbe@0 | 84       for k = 1, #initiators do | 
| bsw/jbe@0 | 85         local member = math.random(member_count) | 
| bsw/jbe@0 | 86         writeln('INSERT INTO "initiator" ("member_id", "initiative_id") VALUES (', initiators[k], ", ", initiative_idx, ");") | 
| bsw/jbe@0 | 87         if math.random(50) > 1 then | 
| bsw/jbe@0 | 88           writeln('INSERT INTO "supporter" ("member_id", "initiative_id", "draft_id") VALUES (', initiators[k], ", ", initiative_idx, ", ", draft_count - math.random(initiative_draft_count[i]) + 1, ");") | 
| bsw/jbe@0 | 89         end | 
| bsw/jbe@0 | 90       end | 
| bsw/jbe@0 | 91       local probability = math.random(99) + 1 | 
| bsw/jbe@0 | 92       for k = 1, member_count do | 
| bsw/jbe@0 | 93         if not is_used[k] and (memberships[area][k] and math.random(probability) <= 4 or math.random(probability) == 1) then | 
| bsw/jbe@0 | 94           writeln('INSERT INTO "supporter" ("member_id", "initiative_id", "draft_id") VALUES (', k, ", ", initiative_idx, ", ", draft_count - math.random(initiative_draft_count[i]) + 1, ");") | 
| bsw/jbe@0 | 95         end | 
| bsw/jbe@0 | 96       end | 
| bsw/jbe@0 | 97       initiative_idx = initiative_idx + 1 | 
| bsw/jbe@0 | 98     end | 
| bsw/jbe@0 | 99   end | 
| bsw/jbe@0 | 100 end | 
| bsw/jbe@0 | 101 | 
| bsw/jbe@0 | 102 writeln('END;') |