nestene 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/TODO.txt +9 -1
- data/autons.rb +1 -2
- data/features/aunton_creates_auton.feature +6 -0
- data/features/schedule_steps.feature +5 -0
- data/features/step_definitions/api/api_create_auton_steps.rb +1 -2
- data/features/step_definitions/api/api_list_of_auton_types_steps.rb +1 -3
- data/features/step_definitions/auton_creates_auton_steps.rb +33 -0
- data/features/step_definitions/callback_steps.rb +3 -6
- data/features/step_definitions/create_auton_steps.rb +1 -1
- data/features/step_definitions/credentials_steps.rb +1 -2
- data/features/step_definitions/execute_step_steps.rb +6 -13
- data/features/step_definitions/schedule_steps_steps.rb +38 -2
- data/features/step_definitions/time_delayed_steps_steps.rb +3 -6
- data/features/step_definitions/ui/create_auton_steps.rb +1 -2
- data/features/step_definitions/ui/list_of_autons_steps.rb +1 -2
- data/features/step_definitions/ui/schedule_auton_step_steps.rb +2 -4
- data/features/step_definitions/ui/show_auton_steps.rb +1 -2
- data/lib/nestene/actor/auton_queue.rb +1 -1
- data/lib/nestene/actor/auton_storage.rb +3 -0
- data/lib/nestene/actor/core.rb +0 -3
- data/lib/nestene/actor/delayed_scheduler.rb +5 -1
- data/lib/nestene/auton_context.rb +13 -0
- data/lib/nestene/auton_execution_queue.rb +5 -0
- data/lib/nestene/ui/app.rb +6 -0
- data/lib/nestene/ui/public/app/application.js +2 -1
- data/lib/nestene/ui/views/auton.haml +1 -2
- data/lib/nestene/version.rb +1 -1
- data/lib/nestene.rb +17 -4
- data/spec/nestene/auton_execution_queue_spec.rb +24 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e479ea793383b23ce3bf9de77bf12ebd31feab21
|
4
|
+
data.tar.gz: 6a8ba3f519fd58266ebebf33f134a1a5399ebb42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fd66164e61c692eabc430c7d7e3cf1cb7a0a89e9a3ec2ff5f9dcac2de720de88a349f3ea14c09f77dc52e25b9e534efabc7b938acd539731e79c3730ae26be6
|
7
|
+
data.tar.gz: 8573732417285586aefc07059efb2a9ceb6d7b186abf9bf324fea0a093c276d64b48db75ecc49b63dfd426cd104fe58a4c9e2956f7e9183b6d963490795e6d4f
|
data/TODO.txt
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
todo:
|
2
|
-
-
|
2
|
+
- Show parameters of scheduled methods
|
3
|
+
- Show duration of scheduled methods
|
4
|
+
- Show Exception of failed states
|
5
|
+
- Don't load jsons from the disk all the time (DiskStorage)
|
3
6
|
- Create Auton with specific ID using UI
|
4
7
|
- Create Auton with wrong type -> error message
|
8
|
+
- Store results of execution in the history
|
5
9
|
|
6
10
|
done:
|
7
11
|
- Render parameters field for parameters to the method, use parameters when scheduling
|
8
12
|
- Sort methods for the dropdown
|
9
13
|
- List/Registry of available auton types
|
14
|
+
- BUG - scheduled methods not executing when nestene starts after methods scheduled
|
15
|
+
- Limit size of auton execution history
|
16
|
+
- Pretty Print JSON for the nestene's state
|
17
|
+
- Add module for autons -> automatic registry
|
data/autons.rb
CHANGED
@@ -5,3 +5,8 @@ Feature: schedule steps
|
|
5
5
|
When I schedule the first step that returns the uuid of the second scheduled step
|
6
6
|
And I wait for the second step to finish
|
7
7
|
Then the Auton should be in the READY state
|
8
|
+
|
9
|
+
Scenario: schedule step on other auton
|
10
|
+
Given I have two autons where first auton schedules step on the other auton
|
11
|
+
When I schedule the step on the first auton and wait for it's execution
|
12
|
+
Then second auton should either have scheduled or executed step
|
@@ -1,11 +1,9 @@
|
|
1
1
|
Given(/^I have one auton$/) do
|
2
2
|
|
3
|
-
class EmptyAuton
|
4
|
-
include StructureMapper::Hash
|
3
|
+
class EmptyAuton < ::Nestene::Auton
|
5
4
|
|
6
5
|
attribute foo: String
|
7
6
|
end
|
8
|
-
Nestene::Registry.register_auton(EmptyAuton)
|
9
7
|
end
|
10
8
|
|
11
9
|
When(/^I get the API list of auton types$/) do
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Given(/^I have an auton that has a step that creates a named auton$/) do
|
2
|
+
class AutonCreatingAuton < Nestene::Auton
|
3
|
+
|
4
|
+
attr_accessor :context
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.counter = 0
|
8
|
+
end
|
9
|
+
|
10
|
+
def create_auton
|
11
|
+
context.create_auton "EmptyAuton", 'empty_auton'
|
12
|
+
end
|
13
|
+
|
14
|
+
attribute counter: Fixnum
|
15
|
+
end
|
16
|
+
|
17
|
+
class EmptyAuton < Nestene::Auton
|
18
|
+
attribute foo: String
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
@auton_type="AutonCreatingAuton"
|
23
|
+
end
|
24
|
+
|
25
|
+
When(/^I start my auton and execute the step$/) do
|
26
|
+
auton_id = Celluloid::Actor[:nestene_core].create_auton(@auton_type)
|
27
|
+
step_id=Celluloid::Actor[:nestene_core].schedule_step(auton_id, :create_auton)
|
28
|
+
Celluloid::Actor[:nestene_core].wait_for_execution_result(auton_id, step_id)
|
29
|
+
end
|
30
|
+
|
31
|
+
Then(/^the new Auton should be created$/) do
|
32
|
+
expect(Celluloid::Actor[:nestene_core].auton_names).to include('empty_auton')
|
33
|
+
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
Given(/^I have an Auton that holds counter state$/) do
|
2
|
-
class CounterAuton
|
3
|
-
include StructureMapper::Hash
|
2
|
+
class CounterAuton < Nestene::Auton
|
4
3
|
|
5
4
|
def initialize
|
6
5
|
self.counter = 0
|
@@ -17,8 +16,7 @@ Given(/^I have an Auton that holds counter state$/) do
|
|
17
16
|
end
|
18
17
|
|
19
18
|
Given(/^I have an Auton that schedules a callback step on the counter Auton$/) do
|
20
|
-
class CallbackAuton
|
21
|
-
include StructureMapper::Hash
|
19
|
+
class CallbackAuton < Nestene::Auton
|
22
20
|
|
23
21
|
def start
|
24
22
|
self.context.schedule_callback('counter', :next, [], :set_state)
|
@@ -52,8 +50,7 @@ end
|
|
52
50
|
|
53
51
|
|
54
52
|
Given(/^I have an Auton that hold counter state and raises exception on execution$/) do
|
55
|
-
class FailingCounterAuton
|
56
|
-
include StructureMapper::Hash
|
53
|
+
class FailingCounterAuton < Nestene::Auton
|
57
54
|
|
58
55
|
def initialize
|
59
56
|
self.counter = 0
|
@@ -1,6 +1,5 @@
|
|
1
1
|
Given(/^I have a running auton with one defined step without any parameters$/) do
|
2
|
-
class SimpleAuton
|
3
|
-
include StructureMapper::Hash
|
2
|
+
class SimpleAuton < Nestene::Auton
|
4
3
|
|
5
4
|
def start
|
6
5
|
'ok'
|
@@ -31,8 +30,7 @@ end
|
|
31
30
|
|
32
31
|
|
33
32
|
Given(/^I have a running auton with one defined step with parameters$/) do
|
34
|
-
class SimpleParamsAuton
|
35
|
-
include StructureMapper::Hash
|
33
|
+
class SimpleParamsAuton < Nestene::Auton
|
36
34
|
|
37
35
|
def start(p1)
|
38
36
|
'param: %s' % p1
|
@@ -51,8 +49,7 @@ end
|
|
51
49
|
|
52
50
|
|
53
51
|
Given(/^I have a running auton with one defined step that fails$/) do
|
54
|
-
class SimpleFailingAuton
|
55
|
-
include StructureMapper::Hash
|
52
|
+
class SimpleFailingAuton < Nestene::Auton
|
56
53
|
|
57
54
|
def start
|
58
55
|
raise "failed!"
|
@@ -74,8 +71,7 @@ end
|
|
74
71
|
|
75
72
|
|
76
73
|
Given(/^I have a running auton with one defined step that fails and one that does not fail$/) do
|
77
|
-
class SimpleTwoStepsFirstFailingAuton
|
78
|
-
include StructureMapper::Hash
|
74
|
+
class SimpleTwoStepsFirstFailingAuton < Nestene::Auton
|
79
75
|
|
80
76
|
def start
|
81
77
|
raise "failed!"
|
@@ -111,9 +107,7 @@ end
|
|
111
107
|
|
112
108
|
|
113
109
|
Given(/^I have a running auton with one defined step that fails on the first invocation but succeeds on the second$/) do
|
114
|
-
class FirstExecutionFailingAuton
|
115
|
-
include StructureMapper::Hash
|
116
|
-
|
110
|
+
class FirstExecutionFailingAuton < Nestene::Auton
|
117
111
|
def initalize
|
118
112
|
self.first = true
|
119
113
|
end
|
@@ -151,8 +145,7 @@ end
|
|
151
145
|
|
152
146
|
|
153
147
|
Given(/^I have a running auton with one defined step that fails and one that does not fail and an exception handling method for the whole Auton$/) do
|
154
|
-
class TwoStepsFirstFailingWithExceptionHandlerAuton
|
155
|
-
include StructureMapper::Hash
|
148
|
+
class TwoStepsFirstFailingWithExceptionHandlerAuton < Nestene::Auton
|
156
149
|
|
157
150
|
def start
|
158
151
|
raise "failed!"
|
@@ -1,6 +1,5 @@
|
|
1
1
|
Given(/^I have an Auton that has two steps, first step scheduling the next step$/) do
|
2
|
-
class ScheduleSecondStepAuton
|
3
|
-
include StructureMapper::Hash
|
2
|
+
class ScheduleSecondStepAuton < Nestene::Auton
|
4
3
|
|
5
4
|
def first
|
6
5
|
context.schedule_step(:second)
|
@@ -27,3 +26,40 @@ When(/^I wait for the second step to finish$/) do
|
|
27
26
|
@execution_result = Celluloid::Actor[:nestene_core].wait_for_execution_result(@auton_id, @step_execution_id)
|
28
27
|
end
|
29
28
|
|
29
|
+
|
30
|
+
Given(/^I have two autons where first auton schedules step on the other auton$/) do
|
31
|
+
class StepSchedulingAuton < Nestene::Auton
|
32
|
+
|
33
|
+
def schedule_step
|
34
|
+
self.step_id = context.schedule_step_on_auton('step_executor', :step)
|
35
|
+
end
|
36
|
+
|
37
|
+
attr_accessor :context
|
38
|
+
|
39
|
+
attribute step_id: Fixnum
|
40
|
+
end
|
41
|
+
|
42
|
+
class StepExecutorAuton < Nestene::Auton
|
43
|
+
|
44
|
+
def step
|
45
|
+
context.schedule_step(:second)
|
46
|
+
end
|
47
|
+
|
48
|
+
attr_accessor :context
|
49
|
+
|
50
|
+
attribute foo: Fixnum
|
51
|
+
end
|
52
|
+
|
53
|
+
@first_auton_id = Celluloid::Actor[:nestene_core].create_auton('StepSchedulingAuton')
|
54
|
+
@second_auton_id = Celluloid::Actor[:nestene_core].create_auton('StepExecutorAuton','step_executor')
|
55
|
+
end
|
56
|
+
|
57
|
+
When(/^I schedule the step on the first auton and wait for it's execution$/) do
|
58
|
+
step_id = Celluloid::Actor[:nestene_core].schedule_step @first_auton_id, :schedule_step
|
59
|
+
@second_auton_step_id = Celluloid::Actor[:nestene_core].wait_for_execution_result @first_auton_id, step_id
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
Then(/^second auton should either have scheduled or executed step$/) do
|
64
|
+
Celluloid::Actor[:nestene_core].wait_for_execution_result @second_auton_id, @second_auton_step_id
|
65
|
+
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
Given(/^an Auton that schedules an one off delayed step in (\d+)\.(\d+) second$/) do |arg1, arg2|
|
2
|
-
class TimeDelayedStepSchedulingAuton
|
3
|
-
include StructureMapper::Hash
|
2
|
+
class TimeDelayedStepSchedulingAuton < Nestene::Auton
|
4
3
|
|
5
4
|
def first
|
6
5
|
context.schedule_delayed_step(0.1, :second)
|
@@ -44,8 +43,7 @@ end
|
|
44
43
|
|
45
44
|
|
46
45
|
Given(/^an Auton that schedules an repeating every (\d+\.\d+) seconds delayed step in (\d+\.\d+) second$/) do |every, delay|
|
47
|
-
class RepeatingTimeDelayedStepdSchedulingAuton
|
48
|
-
include StructureMapper::Hash
|
46
|
+
class RepeatingTimeDelayedStepdSchedulingAuton < Nestene::Auton
|
49
47
|
|
50
48
|
def first
|
51
49
|
context.schedule_repeating_delayed_step(0.1, 0.1, :second)
|
@@ -69,8 +67,7 @@ end
|
|
69
67
|
|
70
68
|
|
71
69
|
Given(/^an Auton that schedules an one off delayed step in (\d+\.\d+) seconds and has a failing step$/) do |delay|
|
72
|
-
class TimeDelayedAndFailingStepSchedulingAuton
|
73
|
-
include StructureMapper::Hash
|
70
|
+
class TimeDelayedAndFailingStepSchedulingAuton < Nestene::Auton
|
74
71
|
|
75
72
|
def first
|
76
73
|
context.schedule_delayed_step(0.1, :second)
|
@@ -1,6 +1,5 @@
|
|
1
1
|
Given(/^I have a running auton with one defined step without parameters$/) do
|
2
|
-
class EmptyAuton
|
3
|
-
include StructureMapper::Hash
|
2
|
+
class EmptyAuton < Nestene::Auton
|
4
3
|
|
5
4
|
def initialize
|
6
5
|
end
|
@@ -27,8 +26,7 @@ end
|
|
27
26
|
|
28
27
|
|
29
28
|
Given(/^I have a running auton with one defined step with two parameters$/) do
|
30
|
-
class EmptyAutonWithParams
|
31
|
-
include StructureMapper::Hash
|
29
|
+
class EmptyAutonWithParams < Nestene::Auton
|
32
30
|
|
33
31
|
def initialize
|
34
32
|
end
|
data/lib/nestene/actor/core.rb
CHANGED
@@ -11,9 +11,6 @@ module Nestene
|
|
11
11
|
subscribe('state_update', :notify_waiters)
|
12
12
|
@execution_futures={}
|
13
13
|
@storage = storage
|
14
|
-
storage.list.each do |auton_id|
|
15
|
-
Celluloid::Actor["storage:%s" % auton_id] = AutonStorage.new(auton_id, @storage)
|
16
|
-
end
|
17
14
|
end
|
18
15
|
|
19
16
|
def auton_names
|
@@ -13,6 +13,10 @@ module Nestene
|
|
13
13
|
@timer = nil
|
14
14
|
end
|
15
15
|
|
16
|
+
def schedule_struct
|
17
|
+
@schedule.to_structure
|
18
|
+
end
|
19
|
+
|
16
20
|
|
17
21
|
def update_schedule topic, auton_id, state
|
18
22
|
|
@@ -51,7 +55,7 @@ module Nestene
|
|
51
55
|
state.queue.to_execute << method
|
52
56
|
end
|
53
57
|
if delayed.every
|
54
|
-
delayed.execute_at
|
58
|
+
delayed.execute_at = now + delayed.every
|
55
59
|
state.queue.add_delayed(delayed)
|
56
60
|
end
|
57
61
|
end
|
@@ -15,6 +15,11 @@ module Nestene
|
|
15
15
|
Celluloid::Actor[:nestene_core].schedule_step @auton_id, name, parameters
|
16
16
|
end
|
17
17
|
|
18
|
+
def schedule_step_on_auton auton_id, name, parameters=[]
|
19
|
+
Celluloid::Actor[:nestene_core].schedule_step auton_id, name, parameters
|
20
|
+
end
|
21
|
+
|
22
|
+
|
18
23
|
def schedule_delayed_step delay, name, parameters=[]
|
19
24
|
Celluloid::Actor[:nestene_core].schedule_delayed_step @auton_id, delay, name, parameters
|
20
25
|
end
|
@@ -27,5 +32,13 @@ module Nestene
|
|
27
32
|
Celluloid::Actor[:nestene_core].get_credentials
|
28
33
|
end
|
29
34
|
|
35
|
+
def create_auton type, auton_id=SecureRandom.uuid
|
36
|
+
Celluloid::Actor[:nestene_core].create_auton type, auton_id
|
37
|
+
end
|
38
|
+
|
39
|
+
attr_reader :auton_id
|
40
|
+
|
41
|
+
|
42
|
+
|
30
43
|
end
|
31
44
|
end
|
@@ -28,6 +28,11 @@ module Nestene
|
|
28
28
|
delayed.sort_by! {|x| x.execute_at}
|
29
29
|
end
|
30
30
|
|
31
|
+
def add_executed executed
|
32
|
+
self.executed.shift while self.executed.size >= 20
|
33
|
+
self.executed << executed
|
34
|
+
end
|
35
|
+
|
31
36
|
|
32
37
|
def remove_delayed_method method_uuid
|
33
38
|
delayed.delete_if{|m| m.uuid == method_uuid}
|
data/lib/nestene/ui/app.rb
CHANGED
@@ -6,6 +6,12 @@ module Nestene
|
|
6
6
|
module Ui
|
7
7
|
class App < Sinatra::Base
|
8
8
|
|
9
|
+
|
10
|
+
get '/schedule' do
|
11
|
+
content_type :json
|
12
|
+
Celluloid::Actor[:delayed_scheduler].schedule_struct.to_json
|
13
|
+
end
|
14
|
+
|
9
15
|
get '/auton_types' do
|
10
16
|
content_type :json
|
11
17
|
Nestene::Registry.registered_autons.to_json
|
@@ -21,11 +21,12 @@ nestene.controller('AutonsController', function($scope, $http, $timeout) {
|
|
21
21
|
});
|
22
22
|
}
|
23
23
|
|
24
|
+
$scope.getAutons();
|
24
25
|
$scope.intervalFunction = function() {
|
25
26
|
$timeout(function() {
|
26
27
|
$scope.getAutons();
|
27
28
|
$scope.intervalFunction();
|
28
|
-
},
|
29
|
+
}, 60000);
|
29
30
|
};
|
30
31
|
|
31
32
|
$scope.intervalFunction();
|
@@ -10,8 +10,7 @@
|
|
10
10
|
.panel.panel-default
|
11
11
|
.panel-heading State
|
12
12
|
.panel-body
|
13
|
-
%
|
14
|
-
= JSON.pretty_generate(@auton_state.serialized)
|
13
|
+
%pre#current_state{'data-toggle' => "tooltip", 'data-placement' => "left", title:"Tooltip on left"}= JSON.pretty_generate(@auton_state.serialized)
|
15
14
|
|
16
15
|
.panel.panel-default
|
17
16
|
#queue.panel-heading Queue
|
data/lib/nestene/version.rb
CHANGED
data/lib/nestene.rb
CHANGED
@@ -33,17 +33,25 @@ module Nestene
|
|
33
33
|
|
34
34
|
end
|
35
35
|
|
36
|
-
|
36
|
+
|
37
|
+
class Auton
|
38
|
+
|
37
39
|
include StructureMapper::Hash
|
38
40
|
|
41
|
+
def self.inherited(cls)
|
42
|
+
Registry.register_auton(cls)
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
class FooAuton < Auton
|
48
|
+
|
39
49
|
def do_foo
|
40
50
|
end
|
41
51
|
|
42
52
|
attribute foo: String
|
43
53
|
end
|
44
54
|
|
45
|
-
Registry.register_auton(FooAuton)
|
46
|
-
|
47
55
|
class SelfValue
|
48
56
|
def value
|
49
57
|
self
|
@@ -57,9 +65,14 @@ module Nestene
|
|
57
65
|
end
|
58
66
|
|
59
67
|
def self.start_nestene(storage)
|
60
|
-
Celluloid::Actor[:delayed_scheduler] = Nestene::Actor::DelayedScheduler.new
|
61
68
|
Celluloid::Actor[:nestene_core] = Nestene::Actor::Core.new(storage)
|
69
|
+
Celluloid::Actor[:delayed_scheduler] = Nestene::Actor::DelayedScheduler.new
|
62
70
|
Celluloid::Actor[:auton_queue] = Nestene::Actor::AutonQueue.new
|
71
|
+
storage.list.each do |auton_id|
|
72
|
+
storage_actor=Nestene::Actor::AutonStorage.new(auton_id, storage)
|
73
|
+
Celluloid::Actor["storage:%s" % auton_id] = storage_actor
|
74
|
+
storage_actor.publish_initial_state
|
75
|
+
end
|
63
76
|
end
|
64
77
|
|
65
78
|
end
|
@@ -14,6 +14,30 @@ module Nestene
|
|
14
14
|
Timecop.return
|
15
15
|
end
|
16
16
|
|
17
|
+
describe '#add_executed' do
|
18
|
+
it 'should add executed method to executed' do
|
19
|
+
executed = double :executed
|
20
|
+
subject.add_executed(executed)
|
21
|
+
|
22
|
+
expect(subject.executed).to include(executed)
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when there are already 20 executed methods' do
|
26
|
+
before do
|
27
|
+
(1..20).each {|i| subject.add_executed(i) }
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should remove the oldest method" do
|
31
|
+
executed = double :executed
|
32
|
+
subject.add_executed(executed)
|
33
|
+
|
34
|
+
expect(subject.executed[-1]).to eq(executed)
|
35
|
+
expect(subject.executed.size).to eq(20)
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
17
41
|
describe '#remove_delayed_method' do
|
18
42
|
context "when the delayed method has been scheduled" do
|
19
43
|
let (:delayed_method_uuid) {subject.add_delayed_method(:some_method, ['p1','p2'], 0.3).uuid}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nestene
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dragan Milic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -243,6 +243,7 @@ files:
|
|
243
243
|
- features/api/api_credentials.feature
|
244
244
|
- features/api/api_list_of_auton_types.feature
|
245
245
|
- features/api/api_list_of_autons.feature
|
246
|
+
- features/aunton_creates_auton.feature
|
246
247
|
- features/callback.feature
|
247
248
|
- features/create_auton.feature
|
248
249
|
- features/credentials.feature
|
@@ -253,6 +254,7 @@ files:
|
|
253
254
|
- features/step_definitions/api/api_credentials_steps.rb
|
254
255
|
- features/step_definitions/api/api_list_of_auton_types_steps.rb
|
255
256
|
- features/step_definitions/api/api_list_of_autons_steps.rb
|
257
|
+
- features/step_definitions/auton_creates_auton_steps.rb
|
256
258
|
- features/step_definitions/callback_steps.rb
|
257
259
|
- features/step_definitions/create_auton_steps.rb
|
258
260
|
- features/step_definitions/credentials_steps.rb
|
@@ -344,6 +346,7 @@ test_files:
|
|
344
346
|
- features/api/api_credentials.feature
|
345
347
|
- features/api/api_list_of_auton_types.feature
|
346
348
|
- features/api/api_list_of_autons.feature
|
349
|
+
- features/aunton_creates_auton.feature
|
347
350
|
- features/callback.feature
|
348
351
|
- features/create_auton.feature
|
349
352
|
- features/credentials.feature
|
@@ -354,6 +357,7 @@ test_files:
|
|
354
357
|
- features/step_definitions/api/api_credentials_steps.rb
|
355
358
|
- features/step_definitions/api/api_list_of_auton_types_steps.rb
|
356
359
|
- features/step_definitions/api/api_list_of_autons_steps.rb
|
360
|
+
- features/step_definitions/auton_creates_auton_steps.rb
|
357
361
|
- features/step_definitions/callback_steps.rb
|
358
362
|
- features/step_definitions/create_auton_steps.rb
|
359
363
|
- features/step_definitions/credentials_steps.rb
|