adhearsion 2.0.0.alpha2 → 2.0.0.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +16 -14
- data/CHANGELOG.md +17 -1
- data/adhearsion.gemspec +14 -13
- data/features/cli_basic.feature +30 -0
- data/features/cli_create.feature +24 -0
- data/features/cli_daemon.feature +21 -0
- data/features/cli_generate.feature +9 -0
- data/features/cli_start.feature +33 -0
- data/features/cli_stop.feature +38 -0
- data/features/controller_generator.feature +19 -0
- data/features/plugin_generator.feature +55 -0
- data/lib/adhearsion.rb +5 -1
- data/lib/adhearsion/call.rb +57 -51
- data/lib/adhearsion/call_controller.rb +4 -20
- data/lib/adhearsion/call_controller/dial.rb +34 -4
- data/lib/adhearsion/calls.rb +4 -1
- data/lib/adhearsion/cli_commands.rb +31 -6
- data/lib/adhearsion/configuration.rb +2 -6
- data/lib/adhearsion/console.rb +56 -17
- data/lib/adhearsion/generators.rb +53 -2
- data/lib/adhearsion/generators/app/app_generator.rb +2 -24
- data/lib/adhearsion/generators/app/templates/config/adhearsion.rb +1 -1
- data/lib/adhearsion/generators/controller/controller_generator.rb +18 -0
- data/lib/adhearsion/generators/controller/templates/lib/controller.rb +4 -0
- data/lib/adhearsion/generators/controller/templates/spec/controller_spec.rb +3 -0
- data/lib/adhearsion/generators/generator.rb +77 -0
- data/lib/adhearsion/generators/plugin/plugin_generator.rb +33 -0
- data/lib/adhearsion/generators/plugin/templates/.gitignore +9 -0
- data/lib/adhearsion/generators/plugin/templates/Gemfile.tt +4 -0
- data/lib/adhearsion/generators/plugin/templates/README.md.tt +2 -0
- data/lib/adhearsion/generators/plugin/templates/Rakefile.tt +1 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template.rb.tt +5 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template/controller_methods.rb.tt +10 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template/plugin.rb.tt +29 -0
- data/lib/adhearsion/generators/plugin/templates/lib/plugin-template/version.rb.tt +3 -0
- data/lib/adhearsion/generators/plugin/templates/plugin-template.gemspec.tt +35 -0
- data/lib/adhearsion/generators/plugin/templates/spec/plugin-template/controller_methods_spec.rb.tt +26 -0
- data/lib/adhearsion/generators/plugin/templates/spec/spec_helper.rb.tt +13 -0
- data/lib/adhearsion/initializer.rb +14 -22
- data/lib/adhearsion/logging.rb +25 -16
- data/lib/adhearsion/outbound_call.rb +3 -3
- data/lib/adhearsion/plugin.rb +14 -0
- data/lib/adhearsion/punchblock_plugin.rb +6 -1
- data/lib/adhearsion/punchblock_plugin/initializer.rb +8 -8
- data/lib/adhearsion/tasks/configuration.rb +1 -1
- data/lib/adhearsion/version.rb +1 -1
- data/spec/adhearsion/call_controller/dial_spec.rb +108 -17
- data/spec/adhearsion/call_controller_spec.rb +7 -64
- data/spec/adhearsion/call_spec.rb +48 -29
- data/spec/adhearsion/calls_spec.rb +7 -0
- data/spec/adhearsion/configuration_spec.rb +14 -14
- data/spec/adhearsion/console_spec.rb +124 -4
- data/spec/adhearsion/generators_spec.rb +17 -0
- data/spec/adhearsion/initializer_spec.rb +22 -18
- data/spec/adhearsion/logging_spec.rb +78 -48
- data/spec/adhearsion/outbound_call_spec.rb +6 -15
- data/spec/adhearsion/plugin_spec.rb +18 -0
- data/spec/adhearsion/process_spec.rb +10 -1
- data/spec/adhearsion/punchblock_plugin/initializer_spec.rb +8 -6
- data/spec/spec_helper.rb +5 -2
- data/spec/support/call_controller_test_helpers.rb +1 -1
- data/spec/support/initializer_stubs.rb +1 -1
- metadata +106 -66
- data/features/cli.feature +0 -108
- data/lib/adhearsion/initializer/logging.rb +0 -33
- data/spec/adhearsion/initializer/logging_spec.rb +0 -55
data/features/cli.feature
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
Feature: Adhearsion Ahn CLI
|
2
|
-
As an Adhearsion user
|
3
|
-
I want a cli command (ahn)
|
4
|
-
So that I can create and interact with adhearsion apps
|
5
|
-
|
6
|
-
Scenario: No arguments given
|
7
|
-
When I run `ahn`
|
8
|
-
Then I should see the usage message
|
9
|
-
And the exit status should be 0
|
10
|
-
|
11
|
-
Scenario: Unrecognized commands
|
12
|
-
When I run `ahn alpha beta`
|
13
|
-
Then the output should contain:
|
14
|
-
"""
|
15
|
-
Unknown command: alpha beta
|
16
|
-
"""
|
17
|
-
And the exit status should be 1
|
18
|
-
|
19
|
-
Scenario: Command create with correct arguments
|
20
|
-
When I run `ahn create path/somewhere`
|
21
|
-
And I cd to "path/somewhere"
|
22
|
-
Then the following files should exist:
|
23
|
-
| Gemfile |
|
24
|
-
| README.md |
|
25
|
-
| Rakefile |
|
26
|
-
| config/adhearsion.rb |
|
27
|
-
| config/environment.rb |
|
28
|
-
And the file "config/adhearsion.rb" should contain "Adhearsion.router"
|
29
|
-
Then the exit status should be 0
|
30
|
-
|
31
|
-
Scenario: Running create with no arguments
|
32
|
-
When I run `ahn create`
|
33
|
-
Then the output should contain:
|
34
|
-
"""
|
35
|
-
"create" was called incorrectly. Call as "ahn create /path/to/directory".
|
36
|
-
"""
|
37
|
-
And the exit status should be 1
|
38
|
-
|
39
|
-
Scenario: Command start with no path outside of the app directory
|
40
|
-
When I run `ahn start`
|
41
|
-
Then the output should contain:
|
42
|
-
"""
|
43
|
-
A valid path is required for start, unless run from an Adhearson app directory
|
44
|
-
"""
|
45
|
-
And the exit status should be 1
|
46
|
-
|
47
|
-
Scenario: Command start with no path inside of the app directory
|
48
|
-
Given JRuby skip test
|
49
|
-
Given that I create a valid app under "path/somewhere"
|
50
|
-
When I cd to "path/somewhere"
|
51
|
-
And I run `ahn start` interactively
|
52
|
-
And I wait for output to contain "Starting connection to server"
|
53
|
-
And I terminate the interactive process
|
54
|
-
Then the output should contain "Loaded config"
|
55
|
-
And the output should contain "Adhearsion::Console: Starting up..."
|
56
|
-
And the output should contain "AHN>"
|
57
|
-
And the output should contain "Transitioning from booting to force_stop"
|
58
|
-
|
59
|
-
Scenario: Command start with only path works properly
|
60
|
-
Given JRuby skip test
|
61
|
-
Given that I create a valid app under "path/somewhere"
|
62
|
-
When I run `ahn start path/somewhere` interactively
|
63
|
-
And I wait for output to contain "Starting connection to server"
|
64
|
-
And I terminate the interactive process
|
65
|
-
Then the output should contain "Loaded config"
|
66
|
-
And the output should contain "Adhearsion::Console: Starting up..."
|
67
|
-
And the output should contain "AHN>"
|
68
|
-
And the output should contain "Transitioning from booting to force_stop"
|
69
|
-
|
70
|
-
Scenario: Command daemon with path works correctly
|
71
|
-
Given JRuby skip test
|
72
|
-
Given that I create a valid app under "path/somewhere"
|
73
|
-
When I run `ahn daemon path/somewhere`
|
74
|
-
And I cd to "path/somewhere"
|
75
|
-
And I terminate the process using the pid file "adhearsion.pid"
|
76
|
-
Then the output should contain "Daemonizing now"
|
77
|
-
And the exit status should be 0
|
78
|
-
|
79
|
-
Scenario: Command start with daemon and pid option
|
80
|
-
Given JRuby skip test
|
81
|
-
Given that I create a valid app under "path/somewhere"
|
82
|
-
When I run `ahn daemon path/somewhere --pid-file=ahn.pid`
|
83
|
-
And I cd to "path/somewhere"
|
84
|
-
And I terminate the process using the pid file "ahn.pid"
|
85
|
-
Then the output should contain "Daemonizing now"
|
86
|
-
|
87
|
-
Scenario: Command stop with valid path and pid option
|
88
|
-
Given JRuby skip test
|
89
|
-
Given that I create a valid app under "path/somewhere"
|
90
|
-
When I run `ahn daemon path/somewhere --pid-file=ahn.pid`
|
91
|
-
And I run `ahn stop path/somewhere --pid-file=ahn.pid`
|
92
|
-
Then the output should contain:
|
93
|
-
"""
|
94
|
-
Stopping Adhearsion
|
95
|
-
"""
|
96
|
-
|
97
|
-
Scenario: Command version should print the version
|
98
|
-
When I run `ahn version`
|
99
|
-
Then the output should contain:
|
100
|
-
"""
|
101
|
-
Adhearsion v
|
102
|
-
"""
|
103
|
-
And the exit status should be 0
|
104
|
-
|
105
|
-
Scenario: Command help
|
106
|
-
When I run `ahn help`
|
107
|
-
Then I should see the usage message
|
108
|
-
And the exit status should be 0
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'logging'
|
2
|
-
|
3
|
-
module Adhearsion
|
4
|
-
class Initializer
|
5
|
-
class Logging
|
6
|
-
class << self
|
7
|
-
|
8
|
-
def start(_appenders = nil, level = :info, formatter = nil)
|
9
|
-
::Logging.init Adhearsion::Logging::LOG_LEVELS
|
10
|
-
|
11
|
-
::Logging.logger.root.appenders = _appenders.nil? ? appenders : _appenders
|
12
|
-
|
13
|
-
::Logging.logger.root.level = level
|
14
|
-
|
15
|
-
::Logging.logger.root.appenders.each do |appender|
|
16
|
-
appender.layout = formatter
|
17
|
-
end unless formatter.nil?
|
18
|
-
end
|
19
|
-
|
20
|
-
# default appenders
|
21
|
-
def appenders
|
22
|
-
@appenders ||= [::Logging.appenders.stdout(
|
23
|
-
'stdout',
|
24
|
-
:layout => ::Logging.layouts.pattern(
|
25
|
-
:pattern => Adhearsion::Logging.adhearsion_pattern,
|
26
|
-
:color_scheme => 'bright'
|
27
|
-
)
|
28
|
-
)]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Adhearsion::Initializer::Logging do
|
4
|
-
|
5
|
-
before do
|
6
|
-
Adhearsion::Initializer::Logging.start
|
7
|
-
end
|
8
|
-
|
9
|
-
after do
|
10
|
-
Adhearsion::Logging.reset
|
11
|
-
end
|
12
|
-
|
13
|
-
after(:all) do
|
14
|
-
Adhearsion::Initializer::Logging.start
|
15
|
-
Adhearsion::Logging.silence!
|
16
|
-
end
|
17
|
-
|
18
|
-
it "initializes properly a Logging object" do
|
19
|
-
::Logging.logger.root.appenders.length.should eql(1)
|
20
|
-
::Logging.logger.root.appenders.select{|a| a.is_a?(::Logging::Appenders::Stdout)}.length.should eql(1)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should created the predefined set of log levels' do
|
24
|
-
::Logging::LEVELS.length.should eql(Adhearsion::Logging::LOG_LEVELS.length)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "initializes properly a Logging object with appenders as parameter" do
|
28
|
-
Adhearsion::Initializer::Logging.start([::Logging.appenders.stdout, ::Logging.appenders.file('example.log')])
|
29
|
-
::Logging.logger.root.appenders.length.should eql(2)
|
30
|
-
::Logging.logger.root.appenders.select{|a| a.is_a?(::Logging::Appenders::Stdout)}.length.should eql(1)
|
31
|
-
::Logging.logger.root.appenders.select{|a| a.is_a?(::Logging::Appenders::File)}.length.should eql(1)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "initializes properly a Logging object with appenders and log level as parameter" do
|
35
|
-
Adhearsion::Initializer::Logging.start([::Logging.appenders.stdout, ::Logging.appenders.file('example.log')], :debug)
|
36
|
-
::Logging.logger.root.appenders.length.should eql(2)
|
37
|
-
::Logging.logger.root.appenders.select{|a| a.is_a?(::Logging::Appenders::Stdout)}.length.should eql(1)
|
38
|
-
::Logging.logger.root.appenders.select{|a| a.is_a?(::Logging::Appenders::File)}.length.should eql(1)
|
39
|
-
::Logging.logger.root.level.should eql(::Logging::LEVELS["debug"])
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should create only a Logging object per Class (reuse per all the instances)" do
|
43
|
-
_logger = Foo.new.logger
|
44
|
-
10.times do
|
45
|
-
Foo.new.logger.object_id.should eql(_logger.object_id)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should reuse a Logging instance in all Class instances but not with child instances" do
|
50
|
-
_foo_logger = Foo.new.logger
|
51
|
-
_bar_logger = Foo::Bar.new.logger
|
52
|
-
_foo_logger.object_id.should_not eql(_bar_logger)
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|