estorm-message-processor 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ Y2JjZmEzMTNjNTY5MTk1YmEzOTZlMWFkNjE0OGNiODdiMThiODMwOQ==
5
+ data.tar.gz: !binary |-
6
+ NzdkOTI1MTk0NzlmOWQzYTg5NDA3NjFhOTcwNmU5MTkyMDVlMTM5OA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZmU5MGFkODE2NzFhMWUyMTgyZTdkMmMyMjIzMDAzNWMyMzMyOTQyNWI3NWY2
10
+ NjI1MjE5NjVlYmIxZDAxMWE3YjZiN2M1NDEzNjQ3MzllOWZhY2ZjMWNjZWEz
11
+ ODJlYWRmNDRkMjA2YzQ1ZGYzNWEzY2JjMjdjM2MxMGJkYzM3YmU=
12
+ data.tar.gz: !binary |-
13
+ YjQyYjMyZjc2YmQwNTE5MzYxZDgzMjUzOTVmNGY3YmQ0NWZhNDExZDhmMDA2
14
+ YjdmNmRhYzQxYjI1ZmQ1YTE1ZjUzMDhkMzk2MjE2ZGVmOTViNzczYTRkNGVh
15
+ ZWUxOThhMmI5NGE4NDE0N2QzM2QzMDViYzE3NGQ2YTA1Y2VmZDI=
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+ gem "codeclimate-test-reporter"
3
+ gem "multi_json"
4
+ gem "minitest"
5
+ gem 'bunny'
6
+ #gem "minitest-rails"
7
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,29 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ estorm-message-processor (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ amq-protocol (1.7.0)
10
+ bunny (0.10.7)
11
+ amq-protocol (>= 1.6.0)
12
+ codeclimate-test-reporter (0.1.1)
13
+ simplecov (>= 0.7.1, < 1.0.0)
14
+ minitest (5.0.8)
15
+ multi_json (1.8.0)
16
+ simplecov (0.7.1)
17
+ multi_json (~> 1.0)
18
+ simplecov-html (~> 0.7.1)
19
+ simplecov-html (0.7.1)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ bunny
26
+ codeclimate-test-reporter
27
+ estorm-message-processor!
28
+ minitest
29
+ multi_json
data/README.md ADDED
@@ -0,0 +1,13 @@
1
+ [![Build Status](https://travis-ci.org/semdinsp/randprize.png)](https://travis-ci.org/semdinsp/randprize)
2
+ [![Code Climate](https://codeclimate.com/repos/524654d9c7f3a31b29038e3a/badges/58ed8386e3e6d266c7ac/gpa.png)](https://codeclimate.com/repos/524654d9c7f3a31b29038e3a/feed)
3
+ [![Gem Version](https://badge.fury.io/rb/estorm-message-processor.png)](http://badge.fury.io/rb/estorm-message-processor)
4
+
5
+ estorm-message-processor gem
6
+ ============
7
+
8
+
9
+ Simple gem to use in rails apps for AMQP inclusiong. Send a hash via AMQP and then have the message processor process the files. See the test pages
10
+
11
+ Usage
12
+ =======
13
+
@@ -0,0 +1,100 @@
1
+ require 'rubygems'
2
+ require 'bunny'
3
+ require 'yaml'
4
+
5
+ module EstormMessageProcessor
6
+ class Base
7
+
8
+ # MT id counter.
9
+ @@mt_id = 0
10
+ def Base.logger
11
+ @@logger
12
+ end
13
+
14
+ def Base.logger=(logger)
15
+ @@logger = logger
16
+ end
17
+
18
+ def logger
19
+ @@logger
20
+ end
21
+
22
+ def process_messages(delivery_info,properties,body)
23
+ begin
24
+ msg = "-----> [bunny_contact_processor] Received from App #{body} "
25
+ logger.info msg
26
+ cmdhash=YAML.load(body)
27
+ delegatestring="delegate_#{cmdhash['command']}"
28
+ # create procedures named delegate_command accepting cmdhash
29
+ self.send(delegatestring,cmdhash)
30
+ #load the promotion and process through data
31
+
32
+ rescue Exception => e # add could not convert integer
33
+ msg= "found bunny exception #{e.message} found #{e.inspect} #{e.backtrace}..." #THIS NEEDS WORK!
34
+ logger.info msg
35
+
36
+ end
37
+ end
38
+
39
+ def logger
40
+ EstormMessageProcessor::Base.logger
41
+ end
42
+
43
+ def setup_bunny_communications(url,flag,queuename)
44
+ begin
45
+ # pass flag in as Rails.env.production?
46
+ @client = Bunny.new(url) if flag
47
+ @client = Bunny.new if !flag
48
+ @client.start
49
+ # msg= "client inspect #{@client.inspect}"
50
+ # logger.info msg
51
+ rescue Bunny::PossibleAuthenticationFailureError => e
52
+ puts "Could not authenticate "
53
+ msg= "logger could not authenticate #{e.message}"
54
+ logger.info msg
55
+ end
56
+ @channel = @client.create_channel
57
+ @queue = @channel.queue(queuename)
58
+ msg= "set up active MQ on #{queuename}"
59
+ logger.info msg
60
+ end
61
+
62
+ def tear_down_bunny
63
+ @client.close if @client!=nil
64
+ msg= "closing bunny"
65
+ logger.info msg
66
+ end
67
+
68
+ def start(config)
69
+ setup_bunny_communications(config[:url],config[:connecturlflag],config[:queuename])
70
+ # Run EventMachine in loop so we can reconnect when the SMSC drops our connection.
71
+ msg= "Connecting to bunny #{config.inspect} environment #{config.inspect}"
72
+ logger.info msg
73
+ loop do
74
+
75
+
76
+ msg= "[*] Waiting for messages in #{@queue.name}. blocking is #{config[:blocking]}"
77
+ logger.info msg
78
+ @queue.subscribe(:block => config[:blocking]) do |delivery_info, properties, body|
79
+ process_messages(delivery_info,properties,body)
80
+ # cancel the consumer to exit
81
+ #delivery_info.consumer.cancel
82
+ end
83
+
84
+ end
85
+ msg= "Disconnected. Reconnecting in 5 seconds.."
86
+ logger.info msg
87
+ #puts msg
88
+ tear_down_bunny
89
+ sleep 1
90
+ setup_bunny_communications
91
+ sleep 4
92
+
93
+
94
+ end
95
+
96
+
97
+
98
+
99
+ end
100
+ end #Module
@@ -0,0 +1,7 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+ Dir[File.join(File.dirname(__FILE__), 'estorm-message-processor/**/*.rb')].sort.each { |lib| require lib }
4
+
5
+ module EstormMessageProcessor
6
+ VERSION = '0.0.1'
7
+ end
@@ -0,0 +1,84 @@
1
+ puts File.dirname(__FILE__)
2
+ require 'yaml'
3
+ require File.dirname(__FILE__) + '/test_helper.rb'
4
+ class MessageFlag
5
+ @@flag=false
6
+ def self.setflag
7
+ @@flag=true
8
+ end
9
+ def self.flag
10
+ @@flag
11
+ end
12
+ end
13
+ class EstormMessageProcessor::Base
14
+ def delegate_testdelegate(cmdhash)
15
+ puts "teste delegate received #{cmdhash.inspect}"
16
+ MessageFlag.setflag
17
+
18
+ end
19
+ end
20
+
21
+ class EstormMessageProcessTest < Minitest::Test
22
+
23
+ def setup
24
+ EstormMessageProcessor::Base.logger=Logger.new(STDERR)
25
+ @f=EstormMessageProcessor::Base.new
26
+ @@temp=false
27
+ puts "after setup"
28
+ end
29
+
30
+ def test_basic
31
+ assert @f!=nil, "should be valid"
32
+ assert !@@temp, "should be false"
33
+ end
34
+
35
+ def test_startup
36
+ config={:url => 'fakeurl',:connecturlflag=> false,:queuename => 'testqueue', :blocking => true}
37
+ Thread.new {
38
+ @f.start(config) }
39
+ sleep(15)
40
+ @f.tear_down_bunny
41
+ assert true,"should get here"
42
+ end
43
+ def test_1yaml
44
+ puts "in yaml test"
45
+ fred={'test' => 'fredtest'}
46
+ yaml=fred.to_yaml
47
+ assert yaml.include?('test'), "should have test in it"
48
+ loaded=YAML.load(yaml)
49
+ assert loaded['test']==fred['test'],"values should be smae"
50
+ end
51
+ def test_message
52
+ assert MessageFlag.flag==false, "should be flase #{MessageFlag.inspect}"
53
+ config={:url => 'fakeurl',:connecturlflag=> false,:queuename => 'testqueue', :blocking => true}
54
+ Thread.new {
55
+ @f.start(config) }
56
+ sleep(20)
57
+ puts "after start in test message"
58
+ Thread.new {
59
+ conn = Bunny.new
60
+ conn.start
61
+
62
+ channel = conn.create_channel
63
+ #puts "connected: #{conn.inspect}"
64
+ puts "bunny sender establisedh"
65
+ queue = channel.queue(config[:queuename])
66
+ assert queue!=nil, "queue should be valid"
67
+ cmdhash={'command'=>'testdelegate', 'temp'=>'temp'}
68
+ puts "about to sende message"
69
+ channel.default_exchange.publish(cmdhash.to_yaml, :routing_key => queue.name)
70
+ puts "----> to system [x] sending #{cmdhash.inspect}"
71
+ conn.close
72
+ }
73
+ puts "after client in test message"
74
+ sleep 5
75
+ assert MessageFlag.flag==true, "should receive message and set temp #{MessageFlag.inspect}"
76
+ @f.tear_down_bunny
77
+
78
+ end
79
+
80
+
81
+
82
+
83
+
84
+ end
@@ -0,0 +1,17 @@
1
+ puts "in test helper"
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ require "codeclimate-test-reporter"
5
+ CodeClimate::TestReporter.start
6
+ require 'stringio'
7
+ require 'minitest/autorun'
8
+ require 'minitest/unit'
9
+ SimpleCov.command_name 'test'
10
+ #SimpleCov.profiles.define 'mygem' do
11
+ # add_group "Gem", '/lib/' # additional config here
12
+ #end
13
+ SimpleCov.start
14
+
15
+ require File.dirname(__FILE__) + '/../lib/estorm-message-processor'
16
+
17
+
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: estorm-message-processor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Scott Sproule
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-12 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: a gem to help rails app process AMQP queues for background jobs
14
+ email: scott.sproule@ficonab.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/estorm-message-processor/base.rb
20
+ - lib/estorm-message-processor.rb
21
+ - test/test_estorm.rb
22
+ - test/test_helper.rb
23
+ - Gemfile
24
+ - Gemfile.lock
25
+ - README.md
26
+ homepage: http://github.com/semdinsp/randprize
27
+ licenses:
28
+ - MIT
29
+ metadata: {}
30
+ post_install_message:
31
+ rdoc_options: []
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 1.3.4
44
+ requirements: []
45
+ rubyforge_project: estorm-message-processor
46
+ rubygems_version: 2.0.6
47
+ signing_key:
48
+ specification_version: 4
49
+ summary: Using a AMQP to process a queue. Primarily support for scripting
50
+ test_files: []