hutch-xamplr 1.3.3 → 1.3.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/.document +5 -0
  2. data/.gitignore +12 -0
  3. data/CHANGES.txt +9 -2
  4. data/COPYING +661 -0
  5. data/Makefile +10 -0
  6. data/VERSION.yml +1 -1
  7. data/examples/employees/final-xampl/xampl-gen.rb +38 -0
  8. data/examples/employees/final-xampl/xml/ddd-final-xampl.xml +86 -0
  9. data/examples/employees/yuml-diagrams/DDD-final-approach.graphml +393 -0
  10. data/examples/employees/yuml-diagrams/DDD-final-xampl-approach.graphml +265 -0
  11. data/examples/employees/yuml-diagrams/DDD-ideal-final-approach.graphml +357 -0
  12. data/examples/random-people-shared-addresses/.gitignore +2 -0
  13. data/examples/random-people-shared-addresses/Makefile +8 -9
  14. data/examples/random-people-shared-addresses/batch-load-users-profiled.rb +91 -0
  15. data/examples/random-people-shared-addresses/batch-load-users-safe.rb +81 -0
  16. data/examples/random-people-shared-addresses/batch-load-users.rb +59 -63
  17. data/examples/random-people/.gitignore +2 -0
  18. data/examples/random-people/Makefile +5 -1
  19. data/examples/random-people/xampl-gen.rb +3 -2
  20. data/examples/read-testing/.gitignore +2 -0
  21. data/examples/tokyo-cabinet-experimental/.gitignore +2 -0
  22. data/lib/xamplr/.cvsignore +1 -0
  23. data/lib/xamplr/templates/.cvsignore +3 -0
  24. data/regression/tightly-nested-mutual-mentions/Makefile +14 -0
  25. data/regression/tightly-nested-mutual-mentions/build.rb +31 -0
  26. data/regression/tightly-nested-mutual-mentions/load.rb +21 -0
  27. data/regression/tightly-nested-mutual-mentions/repo-keep.tgz +0 -0
  28. data/regression/tightly-nested-mutual-mentions/setup.rb +8 -0
  29. data/regression/tightly-nested-mutual-mentions/xampl-gen.rb +36 -0
  30. data/regression/tightly-nested-mutual-mentions/xml/stuff.xml +7 -0
  31. data/xamplr.gemspec +276 -0
  32. metadata +30 -2
@@ -0,0 +1,2 @@
1
+ xampl_generated_code
2
+ repo
@@ -1,16 +1,15 @@
1
1
 
2
2
  nope:
3
3
 
4
- raw:
5
- rm -rf repo
6
- time ruby rawtc.rb
7
- #time ruby rawtc.rb
8
- #time ruby rawtc.rb
9
- #time ruby rawtc.rb
10
- #time ruby rawtc.rb
11
- #time ruby rawtc.rb
12
-
13
4
  batch:
14
5
  rm -rf repo
15
6
  time ruby batch-load-users.rb
16
7
 
8
+ safe:
9
+ rm -rf repo
10
+ time ruby batch-load-users-safe.rb
11
+
12
+ profile:
13
+ rm -rf repo
14
+ time ruby batch-load-users-profiled.rb
15
+
@@ -0,0 +1,91 @@
1
+ require 'fastercsv'
2
+ require 'xampl_generated_code/RandomPeople'
3
+ require 'people'
4
+ require 'settings'
5
+
6
+ require 'ruby-prof'
7
+
8
+ module RandomPeople
9
+
10
+ class BatchLoadUsersProfiled
11
+
12
+ attr_accessor :random_names, :created_addresses, :shared_addresses
13
+
14
+ def load_names(iter)
15
+ inner_start = Time.now
16
+ commit_start = 0
17
+ base = (1 + iter) * self.random_names.size
18
+
19
+ Xampl.transaction("random-people") do
20
+
21
+ random_names.each_with_index do | row, i |
22
+ person_pid = "person-#{ base + i }"
23
+ person = Person.new(person_pid)
24
+
25
+ person.given_name = row[0]
26
+ person.surname = row[1]
27
+ person.email = row[6]
28
+ person.phone = row[7]
29
+
30
+ addresses = Address.find_by_query do | q |
31
+ q.add_condition('street-address', :equals, row[2])
32
+ q.add_condition('postal-code', :equals, row[5])
33
+ end
34
+
35
+ address = addresses.first
36
+ if address then
37
+ person << address
38
+ self.shared_addresses += 1
39
+ else
40
+ address = person.new_address("address-#{ person_pid }")
41
+ address.street_address = row[2]
42
+ address.city = row[3]
43
+ address.state = row[4]
44
+ address.postal_code = row[5]
45
+ self.created_addresses += 1
46
+ end
47
+
48
+ end
49
+ puts "transaction ending..."
50
+ commit_start = Time.now
51
+ end
52
+ done_at = Time.now
53
+ puts "iter: #{ iter } in total: #{ done_at - inner_start }, insert: #{ commit_start - inner_start}, commit: #{done_at - commit_start}"
54
+ end
55
+
56
+ def run
57
+ start_at = Time.now
58
+
59
+ self.random_names = FasterCSV.read("random-names.csv")
60
+
61
+ parsed_at = Time.now
62
+
63
+ base = 0
64
+ self.created_addresses = 0
65
+ self.shared_addresses = 0
66
+
67
+ 2.times do | iter |
68
+ if 1 == iter then
69
+ RubyProf.start
70
+
71
+ load_names(iter)
72
+
73
+ result = RubyProf.stop
74
+ printer = RubyProf::FlatPrinter.new(result)
75
+ printer.print(STDOUT, 0)
76
+ else
77
+ load_names(iter)
78
+ end
79
+ end
80
+
81
+ processed_at = Time.now
82
+
83
+ puts "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
84
+ puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
85
+ end
86
+
87
+ end
88
+
89
+ BatchLoadUsersProfiled.new.run
90
+
91
+ end
@@ -0,0 +1,81 @@
1
+ require 'fastercsv'
2
+ require 'xampl_generated_code/RandomPeople'
3
+ require 'people'
4
+ require 'settings'
5
+
6
+ module RandomPeople
7
+
8
+ class BatchLoadUsers
9
+
10
+ attr_accessor :random_names, :created_addresses, :shared_addresses
11
+
12
+ def load_names(iter)
13
+ inner_start = Time.now
14
+ commit_total = 0
15
+ commit_start = 0
16
+ base = (1 + iter) * self.random_names.size
17
+
18
+ random_names.each_with_index do | row, i |
19
+ Xampl.transaction("random-people") do
20
+ person_pid = "person-#{ base + i }"
21
+ person = Person.new(person_pid)
22
+
23
+ person.given_name = row[0]
24
+ person.surname = row[1]
25
+ person.email = row[6]
26
+ person.phone = row[7]
27
+
28
+ addresses = Address.find_by_query do | q |
29
+ q.add_condition('street-address', :equals, row[2])
30
+ q.add_condition('postal-code', :equals, row[5])
31
+ end
32
+
33
+ address = addresses.first
34
+ if address then
35
+ person << address
36
+ self.shared_addresses += 1
37
+ else
38
+ address = person.new_address("address-#{ person_pid }")
39
+ address.street_address = row[2]
40
+ address.city = row[3]
41
+ address.state = row[4]
42
+ address.postal_code = row[5]
43
+ self.created_addresses += 1
44
+ end
45
+
46
+ commit_start = Time.now
47
+ end
48
+ commit_total += (Time.now - commit_start)
49
+ puts "total: #{ commit_total }, iter: #{ i } --> #{ i / commit_total }/s" if 0 == (i % 1000)
50
+ end
51
+ done_at = Time.now
52
+ total_time = done_at - inner_start
53
+ puts "iter: #{ iter } in total: #{ total_time }, insert: #{ total_time - commit_total }, commit: #{ commit_total }"
54
+ end
55
+
56
+ def run
57
+ start_at = Time.now
58
+
59
+ self.random_names = FasterCSV.read("random-names.csv")
60
+
61
+ parsed_at = Time.now
62
+
63
+ base = 0
64
+ self.created_addresses = 0
65
+ self.shared_addresses = 0
66
+
67
+ 10.times do | iter |
68
+ load_names(iter)
69
+ end
70
+
71
+ processed_at = Time.now
72
+
73
+ puts "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
74
+ puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
75
+ end
76
+
77
+ end
78
+
79
+ BatchLoadUsers.new.run
80
+
81
+ end
@@ -5,79 +5,75 @@ require 'settings'
5
5
 
6
6
  module RandomPeople
7
7
 
8
- start_at = Time.now
8
+ class BatchLoadUsers
9
+
10
+ attr_accessor :random_names, :created_addresses, :shared_addresses
11
+
12
+ def load_names(iter)
13
+ inner_start = Time.now
14
+ commit_start = 0
15
+ base = (1 + iter) * self.random_names.size
16
+
17
+ Xampl.transaction("random-people") do
18
+
19
+ random_names.each_with_index do | row, i |
20
+ person_pid = "person-#{ base + i }"
21
+ person = Person.new(person_pid)
22
+
23
+ person.given_name = row[0]
24
+ person.surname = row[1]
25
+ person.email = row[6]
26
+ person.phone = row[7]
27
+
28
+ addresses = Address.find_by_query do | q |
29
+ q.add_condition('street-address', :equals, row[2])
30
+ q.add_condition('postal-code', :equals, row[5])
31
+ end
32
+
33
+ address = addresses.first
34
+ if address then
35
+ person << address
36
+ self.shared_addresses += 1
37
+ else
38
+ address = person.new_address("address-#{ person_pid }")
39
+ address.street_address = row[2]
40
+ address.city = row[3]
41
+ address.state = row[4]
42
+ address.postal_code = row[5]
43
+ self.created_addresses += 1
44
+ end
9
45
 
10
- arr_of_arrs = FasterCSV.read("random-names.csv")
11
-
12
- parsed_at = Time.now
13
-
14
- #GivenName,Surname,StreetAddress,City,State,ZipCode,EmailAddress,TelephoneNumber
15
-
16
- #<people pid=''
17
- # xmlns="http://xampl.com/people">
18
- # <person pid=''
19
- # given-name=''
20
- # surname=''
21
- # email=''
22
- # phone=''>
23
- # <address pid=''
24
- # street-address=''
25
- # city=''
26
- # state=''
27
- # postal-code=''/>
28
- # </person>
29
- #</people>
30
-
31
- base = 0
32
-
33
- created_addresses = 0
34
- shared_addresses = 0
35
-
36
- 10.times do | iter |
37
- inner_start = Time.now
38
-
39
- Xampl.transaction("random-people") do
46
+ end
47
+ puts "transaction ending..."
48
+ commit_start = Time.now
49
+ end
50
+ done_at = Time.now
51
+ puts "iter: #{ iter } in total: #{ done_at - inner_start }, insert: #{ commit_start - inner_start}, commit: #{done_at - commit_start}"
52
+ end
40
53
 
41
- base += arr_of_arrs.size
54
+ def run
55
+ start_at = Time.now
42
56
 
43
- arr_of_arrs.each_with_index do | row, i |
44
- person_pid = "person-#{ base + i }"
45
- person = Person.new(person_pid)
57
+ self.random_names = FasterCSV.read("random-names.csv")
46
58
 
47
- person.given_name = row[0]
48
- person.surname = row[1]
49
- person.email = row[6]
50
- person.phone = row[7]
59
+ parsed_at = Time.now
51
60
 
52
- addresses = Xampl.find_xampl do | q |
53
- q.add_condition('class', :equals, Address.name)
61
+ base = 0
62
+ self.created_addresses = 0
63
+ self.shared_addresses = 0
54
64
 
55
- q.add_condition('street-address', :equals, row[2])
56
- q.add_condition('postal-code', :equals, row[5])
57
- end
65
+ 10.times do | iter |
66
+ load_names(iter)
67
+ end
58
68
 
59
- address = addresses.first
60
- if address then
61
- person << address
62
- shared_addresses += 1
63
- else
64
- address = person.new_address("address-#{ person_pid }")
65
- address.street_address = row[2]
66
- address.city = row[3]
67
- address.state = row[4]
68
- address.postal_code = row[5]
69
- created_addresses += 1
70
- end
69
+ processed_at = Time.now
71
70
 
72
- end
73
- puts "transaction ending..."
71
+ puts "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
72
+ puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
74
73
  end
75
- puts "iter: #{ iter } in #{ Time.now - inner_start }"
76
- end
77
74
 
78
- processed_at = Time.now
75
+ end
79
76
 
80
- p "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
81
- puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
77
+ BatchLoadUsers.new.run
82
78
 
83
79
  end
@@ -0,0 +1,2 @@
1
+ xampl_generated_code
2
+ repo
@@ -12,5 +12,9 @@ raw:
12
12
 
13
13
  batch:
14
14
  rm -rf repo/random-people
15
- time ruby batch-load-users.rb
15
+ time ruby1.9 batch-load-users.rb
16
+
17
+ gen:
18
+ ruby xampl-gen.rb
19
+ ruby1.9 xampl-gen-191.rb
16
20
 
@@ -27,12 +27,13 @@ if $0 == __FILE__ then
27
27
 
28
28
  filenames = Dir.glob("./xml/**/*.xml")
29
29
 
30
- generator = Generator.new
30
+ #generator = Generator.new
31
+ generator = Generator.new('generator')
31
32
  generator.go(:options => options,
32
33
  :filenames => filenames,
33
34
  :directory => directory)
34
35
 
35
36
  #puts generator.print_elements("./generated-elements.xml")
36
- exit!
37
+ #exit!
37
38
  end
38
39
  end
@@ -0,0 +1,2 @@
1
+ xampl_generated_code
2
+ repo
@@ -0,0 +1,2 @@
1
+ repo
2
+ xampl_generated_code
@@ -0,0 +1 @@
1
+ .cvs.log
@@ -0,0 +1,3 @@
1
+ nice-try
2
+ old
3
+ .cvs.log
@@ -0,0 +1,14 @@
1
+
2
+ nope:
3
+
4
+ build:
5
+ rm -rf repo
6
+ ruby build.rb
7
+
8
+ snap:
9
+ tar czf repo.tgz repo
10
+
11
+ load:
12
+ tar zxf repo.tgz
13
+ time ruby load.rb
14
+
@@ -0,0 +1,31 @@
1
+
2
+ require 'setup'
3
+
4
+ module TestingStuff
5
+
6
+ # <stuff pid='' xmlns="http://xampl.com/stuff">
7
+ # <parent pid=''>
8
+ # <child pid=''>
9
+ # <parent pid=''/>
10
+ # </child>
11
+ # </parent>
12
+ # </stuff>
13
+
14
+ Xampl.transaction("stuff") do
15
+
16
+
17
+ parent = Parent.new('parent1')
18
+ parent.info = "one"
19
+ child = Child.new('child1')
20
+ child.info = "two"
21
+
22
+ parent << child
23
+ child << parent
24
+
25
+ puts "parent ---------------------------------------"
26
+ puts parent.pp_xml
27
+ puts "child ----------------------------------------"
28
+ puts child.pp_xml
29
+ end
30
+
31
+ end
@@ -0,0 +1,21 @@
1
+
2
+ require 'setup'
3
+
4
+ module TestingStuff
5
+
6
+ # <stuff pid='' xmlns="http://xampl.com/stuff">
7
+ # <parent pid=''>
8
+ # <child pid=''>
9
+ # <parent pid=''/>
10
+ # </child>
11
+ # </parent>
12
+ # </stuff>
13
+
14
+ Xampl.transaction("stuff") do
15
+ parent = Parent['parent1']
16
+ puts "parent has info: #{ parent.info }"
17
+ child = parent.child.first
18
+ puts "child has info: #{ child.info }"
19
+ end
20
+
21
+ end