nestene 0.1.8 → 0.2.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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/TODO.txt +9 -1
  3. data/autons.rb +1 -2
  4. data/features/aunton_creates_auton.feature +6 -0
  5. data/features/schedule_steps.feature +5 -0
  6. data/features/step_definitions/api/api_create_auton_steps.rb +1 -2
  7. data/features/step_definitions/api/api_list_of_auton_types_steps.rb +1 -3
  8. data/features/step_definitions/auton_creates_auton_steps.rb +33 -0
  9. data/features/step_definitions/callback_steps.rb +3 -6
  10. data/features/step_definitions/create_auton_steps.rb +1 -1
  11. data/features/step_definitions/credentials_steps.rb +1 -2
  12. data/features/step_definitions/execute_step_steps.rb +6 -13
  13. data/features/step_definitions/schedule_steps_steps.rb +38 -2
  14. data/features/step_definitions/time_delayed_steps_steps.rb +3 -6
  15. data/features/step_definitions/ui/create_auton_steps.rb +1 -2
  16. data/features/step_definitions/ui/list_of_autons_steps.rb +1 -2
  17. data/features/step_definitions/ui/schedule_auton_step_steps.rb +2 -4
  18. data/features/step_definitions/ui/show_auton_steps.rb +1 -2
  19. data/lib/nestene/actor/auton_queue.rb +1 -1
  20. data/lib/nestene/actor/auton_storage.rb +3 -0
  21. data/lib/nestene/actor/core.rb +0 -3
  22. data/lib/nestene/actor/delayed_scheduler.rb +5 -1
  23. data/lib/nestene/auton_context.rb +13 -0
  24. data/lib/nestene/auton_execution_queue.rb +5 -0
  25. data/lib/nestene/ui/app.rb +6 -0
  26. data/lib/nestene/ui/public/app/application.js +2 -1
  27. data/lib/nestene/ui/views/auton.haml +1 -2
  28. data/lib/nestene/version.rb +1 -1
  29. data/lib/nestene.rb +17 -4
  30. data/spec/nestene/auton_execution_queue_spec.rb +24 -0
  31. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 938ed2d1190db863d92c9aa35032fd61a8fd44ef
4
- data.tar.gz: 8248966bf22453f5f52354db1b690bb060ff395f
3
+ metadata.gz: e479ea793383b23ce3bf9de77bf12ebd31feab21
4
+ data.tar.gz: 6a8ba3f519fd58266ebebf33f134a1a5399ebb42
5
5
  SHA512:
6
- metadata.gz: 314b99703e79c4d56ecbca6e1fee5edd7fd2577d0c0c94160b000580e8c778224915330c8fb81d4b85982da5ba111dbffd6fe94ff7df8a3ecf8a9ded9e69b048
7
- data.tar.gz: b9083b23f130cf11ce905101561e5ba52c0b3532fe1da4f7e9dc21fe4ea50f5eb28d994b785563c2e56b7aba073ea14002ae46a23201047dece9c92411c9860b
6
+ metadata.gz: 8fd66164e61c692eabc430c7d7e3cf1cb7a0a89e9a3ec2ff5f9dcac2de720de88a349f3ea14c09f77dc52e25b9e534efabc7b938acd539731e79c3730ae26be6
7
+ data.tar.gz: 8573732417285586aefc07059efb2a9ceb6d7b186abf9bf324fea0a093c276d64b48db75ecc49b63dfd426cd104fe58a4c9e2956f7e9183b6d963490795e6d4f
data/TODO.txt CHANGED
@@ -1,9 +1,17 @@
1
1
  todo:
2
- - BUG - scheduled methods not executing when nestene starts after methods scheduled
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
@@ -1,5 +1,4 @@
1
- class DummyAuton
2
- include StructureMapper::Hash
1
+ class DummyAuton < Nestene::Auton
3
2
 
4
3
  def start
5
4
  sleep 6
@@ -0,0 +1,6 @@
1
+ Feature: Auton creates auton
2
+
3
+ Scenario: Auton creates a named auton
4
+ Given I have an auton that has a step that creates a named auton
5
+ When I start my auton and execute the step
6
+ Then the new Auton should be created
@@ -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,6 +1,5 @@
1
1
  When(/^request creation of an auton with an existing type$/) do
2
- class EmptyAuton
3
- include StructureMapper::Hash
2
+ class EmptyAuton < Nestene::Auton
4
3
 
5
4
  attribute foo: String
6
5
  end
@@ -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,5 +1,5 @@
1
1
  Given(/^an empty auton$/) do
2
- class EmptyAuton
2
+ class EmptyAuton < Nestene::Auton
3
3
  include StructureMapper::Hash
4
4
 
5
5
  attribute foo: String
@@ -1,6 +1,5 @@
1
1
  Given(/^I have an Auton that access credentials in the first step$/) do
2
- class CredentialsAuton
3
- include StructureMapper::Hash
2
+ class CredentialsAuton < Nestene::Auton
4
3
 
5
4
  attribute credentials: String
6
5
 
@@ -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(/^there is a simple Auton implementation$/) do
2
- class EmptyAuton
3
- include StructureMapper::Hash
2
+ class EmptyAuton < Nestene::Auton
4
3
 
5
4
  attribute foo: String
6
5
  end
@@ -1,6 +1,5 @@
1
1
  Given(/^I have one started auton$/) do
2
- class EmptyAuton
3
- include StructureMapper::Hash
2
+ class EmptyAuton < Nestene::Auton
4
3
 
5
4
  attribute foo: String
6
5
  end
@@ -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
@@ -1,6 +1,5 @@
1
1
  Given(/^I have one running Auton$/) do
2
- class SomeCoolAuton
3
- include StructureMapper::Hash
2
+ class SomeCoolAuton < Nestene::Auton
4
3
 
5
4
  def start
6
5
  end
@@ -78,7 +78,7 @@ module Nestene
78
78
  state.queue.failed = true
79
79
  end
80
80
  end
81
- state.queue.executed << executed
81
+ state.queue.add_executed executed
82
82
  end
83
83
  end
84
84
 
@@ -13,6 +13,9 @@ module Nestene
13
13
  def initialize(auton_id, storage)
14
14
  @auton_id = auton_id
15
15
  @storage = storage
16
+ end
17
+
18
+ def publish_initial_state
16
19
  state = get
17
20
  publish('state_update', @auton_id, state) if state
18
21
  end
@@ -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 += delayed.every
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}
@@ -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
- }, 1000);
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
- %code#current_state{'data-toggle' => "tooltip", 'data-placement' => "left", title:"Tooltip on left"}
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
@@ -1,3 +1,3 @@
1
1
  module Nestene
2
- VERSION = "0.1.8"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/nestene.rb CHANGED
@@ -33,17 +33,25 @@ module Nestene
33
33
 
34
34
  end
35
35
 
36
- class FooAuton
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.1.8
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-21 00:00:00.000000000 Z
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