rubberband_flamethrower 0.4.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.5.0
data/bin/flamethrower CHANGED
@@ -12,6 +12,10 @@ command = args.shift.strip rescue 'auto'
12
12
  case command
13
13
  when "fire"
14
14
  RubberbandFlamethrower.fire(*args)
15
+ when "generate_dataset"
16
+ RubberbandFlamethrower.generate_dataset(*args)
17
+ when "fire_dataset"
18
+ RubberbandFlamethrower.fire_dataset(*args)
15
19
  when "help"
16
20
  RubberbandFlamethrower.help
17
21
  else
@@ -2,6 +2,10 @@
2
2
  # It creates a JSON object that approaxiamates data like you would fine in a tweet
3
3
  # with fields for a message (max 140 characters), username, and post_date.
4
4
  # The post_date format is parsable as a date object by default by Elastic Search
5
+
6
+ require "active_support/core_ext"
7
+
8
+
5
9
  module RubberbandFlamethrower
6
10
  class DataGenerator
7
11
  attr_accessor :word_list
@@ -58,6 +62,16 @@ module RubberbandFlamethrower
58
62
  def generate_random_insert_data
59
63
  {message: "#{random_tweet}", username: "#{random_username}", post_date: "#{current_timestamp}"}.to_json
60
64
  end
61
-
65
+
66
+ def generate_dataset(batch_size)
67
+ File.open("dataset", 'w') do |file|
68
+ batch_size.to_i.times do |i|
69
+ file.write(generate_random_insert_data+"\n")
70
+ end
71
+ end
72
+ end
73
+
74
+
75
+
62
76
  end
63
77
  end
@@ -1,6 +1,5 @@
1
1
  # This class is designed to insert objects created with the DataGenerator class into Elastic Search
2
2
 
3
- require "active_support/core_ext"
4
3
  require 'httparty'
5
4
  require "benchmark"
6
5
  require File.dirname(__FILE__)+"/data_generator.rb"
@@ -48,5 +47,23 @@ module RubberbandFlamethrower
48
47
  id = id + 1
49
48
  end
50
49
  end
50
+
51
+ def fire_dataset(filename, starting_id, server_url, index, type, printing_level=0)
52
+ # this will constantly flush the printing to the display so the progress dots appear for each insert
53
+ ($stdout.sync = true) if printing_level == 1
54
+ # a unique ID must be provided for each document stored in Elastic Search
55
+ id = starting_id.to_i
56
+ # loop through lines in the file and insert each
57
+ IO.foreach(filename) do |line|
58
+ (puts insert_data) if printing_level == 2
59
+ response = HTTParty.put("#{server_url}/#{index}/#{type}/#{id}", body: line)
60
+ (puts response.body) if printing_level == 2
61
+ (print ".") if printing_level == 1
62
+ id = id + 1
63
+ end
64
+ end
65
+
66
+
67
+
51
68
  end
52
69
  end
@@ -42,6 +42,26 @@ module RubberbandFlamethrower
42
42
  end
43
43
  end
44
44
 
45
+ def self.generate_dataset(batch_size=500)
46
+ require File.dirname(__FILE__)+"/rubberband_flamethrower/data_generator.rb"
47
+ data = DataGenerator.new
48
+ data.generate_dataset(batch_size)
49
+ end
50
+
51
+ def self.fire_dataset(filename="dataset", starting_id=1, server_url="http://localhost:9200", index="twitter", type="tweet")
52
+ require File.dirname(__FILE__)+"/rubberband_flamethrower/flamethrower.rb"
53
+ flamethrower = Flamethrower.new
54
+ time = Benchmark.measure do
55
+ flamethrower.fire_dataset(filename, starting_id, server_url, index, type, 1)
56
+ end
57
+ puts "\nFinished Inserting Dataset (#{filename}) into Elastic Search."
58
+ puts " user system total real"
59
+ puts time
60
+
61
+ end
62
+
63
+
64
+
45
65
  # Displays help menu of the available help menu commands
46
66
  # this is adapted from the file README.md
47
67
  # things updated here should be updated there
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rubberband_flamethrower"
8
- s.version = "0.4.3"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Orr"]
12
- s.date = "2013-04-09"
12
+ s.date = "2013-04-17"
13
13
  s.description = "Use to quickly fill up some indicies in Elastic Search and to retrieve statistics about insertion rates"
14
14
  s.email = "michael@cloudspace.com"
15
15
  s.executables = ["flamethrower"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubberband_flamethrower
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-09 00:00:00.000000000 Z
12
+ date: 2013-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &11304560 !ruby/object:Gem::Requirement
16
+ requirement: &9560560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.10.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *11304560
24
+ version_requirements: *9560560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &11320540 !ruby/object:Gem::Requirement
27
+ requirement: &9559180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.2.13
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *11320540
35
+ version_requirements: *9559180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &11314600 !ruby/object:Gem::Requirement
38
+ requirement: &9557580 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *11314600
46
+ version_requirements: *9557580
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &11330760 !ruby/object:Gem::Requirement
49
+ requirement: &9573900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.3.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *11330760
57
+ version_requirements: *9573900
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &11324960 !ruby/object:Gem::Requirement
60
+ requirement: &9573020 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 1.8.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *11324960
68
+ version_requirements: *9573020
69
69
  description: Use to quickly fill up some indicies in Elastic Search and to retrieve
70
70
  statistics about insertion rates
71
71
  email: michael@cloudspace.com
@@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  segments:
117
117
  - 0
118
- hash: 2071983575362906945
118
+ hash: -31644688981302429
119
119
  required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  none: false
121
121
  requirements: