smsc_manager 0.4.8 → 0.5.1

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/Manifest.txt CHANGED
@@ -8,6 +8,7 @@ bin/smsc_config.rb
8
8
  bin/smsc_print_config.rb
9
9
  bin/send_sms_post.rb
10
10
  bin/send_sms.rb
11
+ bin/internal_sms_load_test.rb
11
12
  bin/send_sms_load_test.rb
12
13
  bin/sms_print_xml.rb
13
14
  bin/send_sms_http.rb
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+ require 'optparse'
3
+ def usage
4
+ puts "Usage: internal_sms_load_test.rb -u user -m msisdn -s source -t text -c count -r count"
5
+ puts "to test how long to send c sms"
6
+ exit
7
+ end
8
+ def parse_options(params)
9
+ opts = OptionParser.new
10
+ puts "argv are #{params}"
11
+ #params_split = params.split(' ')
12
+ #puts "paramsp is #{paramsp}"
13
+ user_flag=msisdn_flag=source_flag=text_flag=count_flag=true
14
+ temp_hash = {}
15
+ opts.on("-u","--user VAL", String) {|val| temp_hash[:user ] = val
16
+ puts "user is #{val}"
17
+ user_flag=false }
18
+ opts.on("-h","--host VAL", String) {|val| temp_hash[:host ] = val
19
+ puts "host is #{val}"
20
+ }
21
+
22
+ opts.on("-c","--count VAL", Integer) {|val| temp_hash[:count ] = val
23
+ puts "count is #{val}"
24
+ count_flag=false }
25
+ opts.on("-m","--msisdn VAL", String) {|val| temp_hash[:msisdn ] = val
26
+ puts "msiddn is #{val}"
27
+ msisdn_flag=false }
28
+ opts.on("-r","--repeat VAL", Integer) {|val| temp_hash[:repeat ] = val
29
+ puts "repease is #{val}"
30
+ msisdn_flag=false }
31
+
32
+ opts.on("-s","--source VAL", String) {|val| temp_hash[:source ] = val
33
+ puts "source is #{val}"
34
+ source_flag=false }
35
+ opts.on("-t","--text VAL", String) {|val| temp_hash[:text ] = val
36
+ puts "text is #{val}"
37
+ text_flag=false }
38
+ #opts.on("-d","--database VAL", String) {|val| temp_hash[:db ] = val }
39
+ #opts.on("-p","--password VAL", String) {|val| temp_hash[:password ] = val }
40
+ #opts.on("-u","--user VAL", String) {|val| temp_hash[:user ] = val }
41
+ #puts " in test commander option parse #{port} #{url}"
42
+ opts.parse(params)
43
+ # puts " in HTTP #{hostname} port #{port} url: #{url}"
44
+ usage if user_flag or msisdn_flag or source_flag or text_flag or count_flag
45
+ return temp_hash
46
+ end
47
+ arg_hash=parse_options(ARGV)
48
+ require 'pp'
49
+
50
+ require 'rubygems'
51
+ gem 'smsc_manager'
52
+ require 'smsc_manager'
53
+ def send_group(arg_hash,sms_sender)
54
+ user=arg_hash[:user]
55
+ destination=arg_hash[:msisdn]
56
+ source=arg_hash[:source]
57
+ text=arg_hash[:text]
58
+ count=arg_hash[:count]
59
+ receipt_count=count
60
+ 1.upto(count) { |c|
61
+ puts "sent #{c} messages" if c % 100 == 0
62
+ final_text = "count: #{c}: #{text} "
63
+ s=SmscManager::Sms.new(final_text,destination,source)
64
+ sms_sender.send_topic_sms_receipt(s) { |m| receipt_count-=1
65
+ # puts "receipt: #{receipt_count}"
66
+ }
67
+ sleep(1) if c % 100 == 0
68
+ Thread.pass
69
+ }
70
+
71
+ # sms_sender.close_topic
72
+ begin
73
+ Timeout::timeout(count*0.5) {
74
+ while true
75
+ puts "sent #{count} waiting for #{receipt_count} receipts"
76
+ exit(0) if receipt_count==0
77
+ sleep(1)
78
+ end }
79
+ rescue SystemExit
80
+
81
+ rescue Exception => e
82
+ puts "exception #{e.message} class: #{e.class}"
83
+ puts "#{e.backtrace}"
84
+ raise e
85
+
86
+ end
87
+ receipt_count
88
+ end
89
+ puts "Finding sms topic to use:"
90
+ begin
91
+ sms_sender=SmscManager::SmsSendTopic.new(arg_hash)
92
+ # sms_sender.setup_auto_close #only call this once # servers onlycall cloase
93
+ rescue Exception => e
94
+ puts "exception found #{e.backtrace}"
95
+ end
96
+
97
+ repeat= arg_hash[:repeat]
98
+ count= arg_hash[:count]
99
+ start=Time.now
100
+ puts "Time now: #{start}"
101
+ no_receipt_count=0
102
+ 1.upto(repeat) { |r|
103
+ no_receipt_count+=send_group(arg_hash,sms_sender)
104
+ sleep(1)
105
+
106
+ }
107
+
108
+ diff = Time.now - start
109
+ no_prob = count*repeat - no_receipt_count
110
+ puts "#{Time.now} Sent #{count*repeat} in #{diff} seconds with #{no_receipt_count} problems";
111
+ puts " Average message per second is: #{no_prob/diff}"
112
+
113
+
114
+
115
+ exit(0)
116
+
117
+ # puts "Sending user: #{user} destination: #{destination} text: #{text}"
118
+ # res= smsc.send(sms)
119
+ # puts "Response code: #{res.response} body: #{res.response_body}"
120
+ # puts "Response code: #{res}" if res.kind_of? String
121
+ # puts "pretty print response:"
122
+ # pp res
123
+ # puts "Response code: #{res.} body: #{res.code}" if res.kind_of? Net::Http
124
+
data/bin/send_sms.rb CHANGED
@@ -56,6 +56,7 @@ require 'smsc_manager'
56
56
  text=arg_hash[:text]
57
57
  sms_sender.send_sms(text,destination,source)
58
58
  puts "Sending user: #{user} destination: #{destination} text: #{text}"
59
+ #sms_sender.setup_auto_close
59
60
  # res= smsc.send(sms)
60
61
  # puts "Response code: #{res.response} body: #{res.response_body}"
61
62
  # puts "Response code: #{res}" if res.kind_of? String
@@ -60,14 +60,40 @@ require 'smsc_manager'
60
60
  count=arg_hash[:count]
61
61
  start=Time.now
62
62
  puts "Time now: #{start}"
63
+ receipt_count=count
63
64
  1.upto(count) { |c|
64
65
  puts "sent #{c} messages" if c % 100 == 0
65
66
  final_text = "count: #{c}: #{text} "
66
- sms_sender.send_sms(final_text,destination,source)
67
+ s=SmscManager::Sms.new(final_text,destination,source)
68
+ sms_sender.send_topic_sms_receipt(s) { |m| receipt_count-=1
69
+ # puts "receipt: #{receipt_count}"
70
+ }
71
+ sleep(1) if c % 100 == 0
72
+ Thread.pass
67
73
  }
68
74
  diff = Time.now - start
69
- sms_sender.close_topic
75
+ # sms_sender.close_topic
76
+ begin
77
+ Timeout::timeout(count*0.5) {
78
+ while true
79
+ puts "sent #{count} waiting for #{receipt_count} receipts"
80
+ exit(0) if receipt_count==0
81
+ sleep(1)
82
+ end }
83
+ rescue SystemExit
84
+
85
+ rescue Exception => e
86
+ puts "exception #{e.message} class: #{e.class}"
87
+ puts "no receipt"
88
+ # raise "timeout"
89
+ ensure
90
+ sms_sender.setup_auto_close
91
+ end
92
+
93
+
70
94
  puts "#{Time.now} Sent #{count} in #{diff} seconds";
95
+ exit(0)
96
+
71
97
  # puts "Sending user: #{user} destination: #{destination} text: #{text}"
72
98
  # res= smsc.send(sms)
73
99
  # puts "Response code: #{res.response} body: #{res.response_body}"
data/bin/sms_om_server.rb CHANGED
@@ -12,7 +12,7 @@ require 'smsc_manager'
12
12
  puts "Starting Operational Measurement (OM) server:"
13
13
  # begin
14
14
  # can add additional options to change host/port etc
15
- sms_listener=SmscManager::SmsStatisticsListener.new({:topic => '/topic/sms'}).run
15
+ sms_listener=SmscManager::SmsStatisticsListener.new({:topic => '/topic/sms', :thread_count => '5'}).run
16
16
  # sms_listener.join
17
17
  # rescue Exception => e
18
18
  puts "exception found #{e.backtrace}"
@@ -11,7 +11,7 @@ require 'smsc_manager'
11
11
 
12
12
  puts "Starting topic server:"
13
13
  # begin
14
- SmscManager::SmscListener.new({:topic => '/topic/sms'}).run
14
+ SmscManager::SmscListener.new({:topic => '/topic/sms', :thread_count => '14'}).run
15
15
  # sms_listener.join
16
16
  # rescue Exception => e
17
17
  puts "exception found #{e.backtrace}"
@@ -45,20 +45,21 @@ class BroadcastTopic
45
45
  # puts " dst is #{dst}"
46
46
  }
47
47
  puts "populate topic sent #{self.sent}"
48
- self.sms_sender.close_topic
48
+ sleep(1)
49
+ self.sms_sender.disconnect_stomp
49
50
  end
50
51
  def send_it(txt,dst)
51
52
  # puts "hello from send it"
52
53
  begin
53
54
  sms=SmscManager::Sms.new(txt,dst,self.source)
54
- self.sms_sender.send_topic_sms(sms)
55
+ self.sms_sender.send_topic_sms_receipt(sms) {|r| # puts "in receipt handler #{r.to_s}"
56
+ self.sent+=1 }
55
57
  self.attempts+=1
56
- self.sent+=1
57
58
  rescue Exception => e
58
59
  self.sent-=1
59
60
  puts "bad values dst: #{dst} txt: #{txt} msg: #{e.message}"
60
61
  end
61
- self.sms_sender.close_topic
62
+ # self.sms_sender.close_topic
62
63
  end
63
64
  end
64
65
  end
@@ -7,7 +7,7 @@ require 'stomp_message'
7
7
  # This sends the sms to a activemq topic
8
8
  module SmscManager
9
9
  class SmsSendTopic < StompMessage::StompSendTopic
10
- attr_accessor :conn
10
+
11
11
  #need to define topic, host properly
12
12
  @@TOPIC='/topic/sms'
13
13
  # must be defined as method in sms_listener
@@ -15,9 +15,10 @@ class SmsSendTopic < StompMessage::StompSendTopic
15
15
  def initialize(options={})
16
16
  # set up variables using hash
17
17
  options[:topic] = options[:topic]==nil ? @@TOPIC : options[:topic]
18
- puts "#{self.class}: host is: #{host} port is #{port} topic is #{options[:topic]}"
18
+
19
19
  super(options)
20
- puts "finished initializing"
20
+
21
+ #puts "finished initializing"
21
22
  end
22
23
  # def initialize()
23
24
  # self.conn = Stomp::Connection.open '', '', 'localhost', 61613, false
@@ -33,9 +34,19 @@ class SmsSendTopic < StompMessage::StompSendTopic
33
34
  # msgbody=sms.to_xml
34
35
  m=StompMessage::Message.new(@@STOMP_SMS_MESSAGE, sms.to_xml)
35
36
  # puts "message body is #{msgbody}"
36
- headers = {:msisdn =>"#{sms.destination}"}
37
+ # headers = {:msisdn =>"#{sms.destination}"}
38
+ headers = {}
37
39
  send_topic(m, headers)
38
40
  end #send_sms
41
+ def send_topic_sms_receipt(sms, &r_block)
42
+ #sms=SmscManager::Sms.new(text,destination,source)
43
+ # msgbody=sms.to_xml
44
+ m=StompMessage::Message.new(@@STOMP_SMS_MESSAGE, sms.to_xml)
45
+ # puts "message body is #{msgbody}"
46
+ # headers = {:msisdn =>"#{sms.destination}"}
47
+ headers = {}
48
+ send_topic(m, headers, &r_block)
49
+ end #send_sms
39
50
  # simple script to show xml message
40
51
  def self.create_stomp_message(txt,dest,src)
41
52
  sms=SmscManager::Sms.new(txt,dest,src)
@@ -17,23 +17,23 @@ class SmscListener < StompMessage::StompServer
17
17
  self.smsc=SmscManager::SmscConnection.factory
18
18
  puts "finished initializing"
19
19
  end
20
- def send_reply(headers,msg)
21
- msisdn = headers['msisdn']
22
- reply_topic=headers['reply-to']
23
- puts "headers: #{headers['msisdn']} reply topic #{headers['reply-to']}"
24
- internal_conn = Stomp::Connection.open '', '', self.host, self.port, false
25
- internal_conn.subscribe reply_topic, { :ack =>"auto" }
20
+ # def send_reply(headers,msg)
21
+ # msisdn = headers['msisdn']
22
+ # reply_topic=headers['reply-to']
23
+ # puts "headers: #{headers['msisdn']} reply topic #{headers['reply-to']}"
24
+ # internal_conn = Stomp::Connection.open '', '', self.host, self.port, false
25
+ # internal_conn.subscribe reply_topic, { :ack =>"auto" }
26
26
  # m=StompMessage::Message.new('stomp_REPLY', msg_body)
27
- internal_conn.send(reply_topic, msg.to_xml, {'persistent'=>'false', 'msisdn' => "#{msisdn}" })
28
- internal_conn.unsubscribe reply_topic
29
- end
27
+ # internal_conn.send(reply_topic, msg.to_xml, {'persistent'=>'false', 'msisdn' => "#{msisdn}" })
28
+ # internal_conn.unsubscribe reply_topic
29
+ # end
30
30
  # name is message command
31
31
  def stomp_SMS(msg, stomp_msg)
32
32
  sms=SmscManager::Sms.load_xml(msg.body)
33
33
  puts "sending sms #{msg.body}" if @debug
34
34
  res= self.smsc.send(sms)
35
35
 
36
- sleep(SLEEP_TIME) #only 5 messages per second max
36
+ # sleep(SLEEP_TIME) #only 5 messages per second max
37
37
  end
38
38
 
39
39
  end # smsc listener
@@ -1,8 +1,8 @@
1
1
  module SmscManager #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 4
5
- TINY = 8
4
+ MINOR = 5
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: smsc_manager
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.8
7
- date: 2007-10-03 00:00:00 +08:00
6
+ version: 0.5.1
7
+ date: 2007-10-08 00:00:00 +08:00
8
8
  summary: connection to smsc via http using kannel
9
9
  require_paths:
10
10
  - lib
@@ -39,6 +39,7 @@ files:
39
39
  - bin/smsc_print_config.rb
40
40
  - bin/send_sms_post.rb
41
41
  - bin/send_sms.rb
42
+ - bin/internal_sms_load_test.rb
42
43
  - bin/send_sms_load_test.rb
43
44
  - bin/sms_print_xml.rb
44
45
  - bin/send_sms_http.rb
@@ -73,6 +74,7 @@ executables:
73
74
  - smsc_print_config.rb
74
75
  - send_sms_post.rb
75
76
  - send_sms.rb
77
+ - internal_sms_load_test.rb
76
78
  - send_sms_load_test.rb
77
79
  - sms_print_xml.rb
78
80
  - send_sms_http.rb