nestene 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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