[UNSTABLE] Still refactoring. Messages no longer raise

pull/73/head
Rick Carlino 2015-03-18 11:57:36 -05:00
parent de7bfd2172
commit a134e8f16a
31 changed files with 72 additions and 88 deletions

View File

@ -16,7 +16,6 @@ require_relative 'lib/status'
Status.current = Status.new
$shutdown = 0
$db_write_sync = Mutex.new
print 'database '
require 'active_record'

View File

@ -39,6 +39,10 @@ class DbAccess
end
def write_sync
@write_sync ||= Mutex.new
end
def create_command(*args)
add_command_line(*args)
create_new_command(Time.now,'NOTSET')

View File

@ -2,7 +2,7 @@ require 'bson'
require 'sqlite3'
require 'active_record'
require_relative '../../app/models/command.rb'
require_relative '../../app/models/command.rb'
require_relative '../../app/models/command_line.rb'
@ -27,7 +27,7 @@ class DbAccessCommands
@new_command.scheduled_time = scheduled_time
@new_command.crop_id = crop_id
@new_command.status = 'creating'
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
@new_command.save
end
end
@ -38,7 +38,7 @@ class DbAccessCommands
fill_in_command_line_coordinates(line, action, x, y, z, speed)
fill_in_command_line_pins(line, pin_nr, value1, value2, mode, time)
fill_in_command_line_extra(line, amount, external_info)
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
line.save
end
end
@ -70,7 +70,7 @@ class DbAccessCommands
def save_new_command
if @new_command != nil
@new_command.status = 'scheduled'
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
@new_command.save
end
end
@ -78,7 +78,7 @@ class DbAccessCommands
def clear_schedule
Command.where("status = ? AND scheduled_time IS NOT NULL",'scheduled').find_each do |cmd|
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
cmd.delete
end
end
@ -86,7 +86,7 @@ class DbAccessCommands
def clear_crop_schedule(crop_id)
Command.where("status = ? AND scheduled_time IS NOT NULL AND crop_id = ?",'scheduled',crop_id).find_each do |cmd|
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
cmd.delete
end
end
@ -100,7 +100,7 @@ class DbAccessCommands
def set_command_to_execute_status(new_status)
if @last_command_retrieved != nil
@last_command_retrieved.status = new_status
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
@last_command_retrieved.save
end
end

View File

@ -29,14 +29,14 @@ class DbAccessLogs
log.text = text
log.module_id = module_id
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
log.save
end
# clean up old logs
if Log.count > @dbaccess.max_nr_log_lines
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
Log.delete(Log.order("created_at asc").first(Log.count - @dbaccess.max_nr_log_lines))
end
end

View File

@ -24,7 +24,7 @@ class DbAccessMeasurements
meas = Measurement.new
meas.value = value
meas.external_info = external_info
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
meas.save
end
end
@ -54,7 +54,7 @@ class DbAccessMeasurements
def delete_measurement(id)
if Measurement.exists?(id)
meas = Measurement.find(id)
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
meas.delete
end
end

View File

@ -22,7 +22,7 @@ class DbAccessParameters
# increment param version
#
def increment_parameters_version
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
param = Parameter.find_or_create_by(name: 'PARAM_VERSION')
param.valuetype = 1 if param.valuetype != 1
param.valueint = 0 if param.valueint == nil
@ -39,7 +39,7 @@ class DbAccessParameters
fill_parameter_values(param, value)
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
param.save
end
@ -97,7 +97,7 @@ class DbAccessParameters
param.valuestring = type == 3 ? value.to_s : nil
param.valuebool = type == 4 ? value : nil
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
param.save
end
increment_parameters_version

View File

@ -33,7 +33,7 @@ class DbAccessRefreshes
def increment_refresh
r = Refresh.find_or_create_by(name: 'FarmBotControllerSchedule')
r.value = r.value == nil ? 0 : r.value.to_i + 1
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
r.save
end
end

View File

@ -42,11 +42,10 @@ class MessageHandler
send_message_obj_to_individual_handlers(msg)
check_if_message_handled(msg)
rescue => e
begin
send_error(msg.sender, time_stamp, " #{e.message} @ #{e.backtrace.last}")
rescue => e
puts "Error while sending error message: #{e.message}"
end
sender = msg.try(:sender) || "UNKNOWN-SENDER"
# require 'pry'
# binding.pry
send_error(sender, e)
end
# Handles an error (typically, an unauthorized or unknown message). Returns
@ -67,14 +66,17 @@ class MessageHandler
send_message(destination, command)
end
def send_error(destination, time_stamp, error)
time_stamp ||= Time.now.to_f.to_s
def send_error(destination, error, time_stamp = Time.now.to_f.to_s)
err_msg = "#{error.message} @ #{error.backtrace.first}"
puts err_msg
command = { :message_type => 'error',
:time_stamp => Time.now.to_f.to_s,
:confirm_id => time_stamp,
:error => error }
:error => err_msg }
send_message(destination, command)
rescue => e
puts "Error while sending error message:", e.message, e.backtrace.first
end
def send_message(destination, command)
@ -91,9 +93,9 @@ class MessageHandler
end
def check_if_message_handled(message_obj)
if message_obj.handled == false
send_error(message_obj.sender, '', 'message could not be handled')
end
raise 'message could not be handled' if message_obj.handled == false
rescue => e
send_error(message_obj.sender, e)
end
# Print incoming JSON as YAML, but only if it's not a read_status message.

View File

@ -41,11 +41,11 @@ class MessageHandlerParameter < MessageHandlerBase
@dbaccess.write_to_log(2,'handle write parameters')
if message.payload.has_key? 'parameters'
param_list = message.payload['parameters']
param_list.each do |param|
if param.has_key? 'name' and param.has_key? 'type' and param.has_key? 'value'
if param.has_key? 'name' and param.has_key? 'type' and param.has_key? 'value'
@dbaccess.write_to_log(2,"param = #{param}")
@ -62,8 +62,10 @@ class MessageHandlerParameter < MessageHandlerBase
end
message.handler.send_confirmation(message.sender, message.time_stamp)
else
message.handler.send_error(message.sender, message.time_stamp, 'no paramer list in message')
end
raise 'no paramer list in message'
end
rescue => e
message.handler.send_error(message.sender, e)
end
end

View File

@ -3,7 +3,6 @@ require './lib/database/dbaccess.rb'
require 'time'
require_relative 'messagehandler_base'
require_relative 'messagehandler_schedule_cmd_line'
# Get the JSON command, received through skynet, and send it to the farmbot
# command queue Parses JSON messages received through SkyNet.
class MessageHandlerSchedule < MessageHandlerBase
@ -58,7 +57,7 @@ class MessageHandlerSchedule < MessageHandlerBase
@dbaccess.clear_crop_schedule(crop_id)
message_contents['commands'].each do |command|
Array(message_contents['commands']).each do |command|
save_command_with_lines(command)
end

View File

@ -4,7 +4,6 @@ puts 'starting up'
require './lib/database/dbaccess.rb'
require './lib/database/filehandler.rb'
$db_write_sync = Mutex.new
#require './lib/controller.rb'
#require "./lib/hardware/ramps.rb"

View File

@ -1,5 +1,9 @@
require_relative 'lib/status'
require_relative 'lib/messaging/messenger'
Messenger.current.start
puts "UID: #{Messenger.current.uuid}"
puts "TOKEN: #{Messenger.current.token}"
loop { sleep 0.3 }

View File

@ -9,7 +9,6 @@ require './app/models/command_line.rb'
describe ControllerCommandProc do
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -4,14 +4,13 @@ require './lib/database/dbaccess.rb'
describe DbAccess do
before do
$db_write_sync = Mutex.new
@db = DbAccess.new('development')
end
## commands
it "create new command" do
crop_id = rand(9999999).to_i
crop_id = rand(9999999).to_i
scheduled_time = Time.now
@db.create_new_command(scheduled_time, crop_id)
@ -24,7 +23,7 @@ describe DbAccess do
it "add command line" do
crop_id = rand(9999999).to_i
crop_id = rand(9999999).to_i
scheduled_time = Time.now
action = "TEST"
@ -105,7 +104,7 @@ describe DbAccess do
amount = rand(9999999).to_i
external_info = rand(9999999).to_s
crop_id = rand(9999999).to_i
crop_id = rand(9999999).to_i
scheduled_time = Time.now
@db.create_new_command(scheduled_time, crop_id)
@ -120,7 +119,7 @@ describe DbAccess do
it "save new command" do
crop_id = rand(9999999).to_i
crop_id = rand(9999999).to_i
scheduled_time = Time.now
@db.create_new_command(scheduled_time, crop_id)
@ -146,8 +145,8 @@ describe DbAccess do
it "clear crop schedule" do
crop_id_1 = rand(9999999).to_i
crop_id_2 = rand(9999999).to_i
crop_id_1 = rand(9999999).to_i
crop_id_2 = rand(9999999).to_i
scheduled_time = Time.now
@db.create_new_command(scheduled_time, crop_id_1)
@ -168,7 +167,7 @@ describe DbAccess do
it "clear crop schedule" do
crop_id = rand(9999999).to_i
crop_id = rand(9999999).to_i
scheduled_time = Time.now
@db.create_new_command(scheduled_time, crop_id)
@ -182,7 +181,7 @@ describe DbAccess do
it "set command to exeute status" do
crop_id = rand(9999999).to_i
crop_id = rand(9999999).to_i
scheduled_time = Time.now
@db.create_new_command(scheduled_time, crop_id)

View File

@ -4,7 +4,6 @@ require './lib/database/dbaccess.rb'
describe DbAccess do
before do
$db_write_sync = Mutex.new
@db = DbAccess.new('development')
#@db.max_nr_log_lines = 10
end

View File

@ -4,14 +4,13 @@ require './lib/database/dbaccess.rb'
describe DbAccess do
before do
$db_write_sync = Mutex.new
@db = DbAccess.new('development')
end
## measurements
it "write measurement" do
measurement_value = rand(9999999).to_i
measurement_text = rand(9999999).to_s
@db.write_measurements(measurement_value, measurement_text)
@ -46,7 +45,7 @@ describe DbAccess do
@db.write_measurements(measurement_value, measurement_text)
id = Measurement.where("value = ? and external_info = ?",measurement_value, measurement_text).last.id
@db.delete_measurement(id)
measurements = Measurement.where("value = ? and external_info = ?",measurement_value, measurement_text)

View File

@ -4,7 +4,6 @@ require './lib/database/dbaccess.rb'
describe DbAccess do
before do
$db_write_sync = Mutex.new
@db = DbAccess.new('development')
end
@ -130,10 +129,10 @@ describe DbAccess do
param_value = 543
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_if_fixnum(param, param_value)
@db.fill_parameter_if_fixnum(param, param_value)
return_val = param.valueint
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "fill parameter values float" do
@ -141,10 +140,10 @@ describe DbAccess do
param_value = 54.32
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_if_float(param, param_value)
@db.fill_parameter_if_float(param, param_value)
return_val = param.valuefloat
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "fill parameter values string" do
@ -152,10 +151,10 @@ describe DbAccess do
param_value = "UVW"
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_if_string(param, param_value)
@db.fill_parameter_if_string(param, param_value)
return_val = param.valuestring
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "fill parameter values bool" do
@ -163,10 +162,10 @@ describe DbAccess do
param_value = true
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_if_bool(param, param_value)
@db.fill_parameter_if_bool(param, param_value)
return_val = param.valuebool
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "fill parameter values 2 int" do
@ -174,10 +173,10 @@ describe DbAccess do
param_value = 543
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_values(param, param_value)
@db.fill_parameter_values(param, param_value)
return_val = param.valueint
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "fill parameter values 2 float" do
@ -185,10 +184,10 @@ describe DbAccess do
param_value = 54.32
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_values(param, param_value)
@db.fill_parameter_values(param, param_value)
return_val = param.valuefloat
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "fill parameter values 2 string" do
@ -196,10 +195,10 @@ describe DbAccess do
param_value = "UVW"
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_values(param, param_value)
@db.fill_parameter_values(param, param_value)
return_val = param.valuestring
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "fill parameter values 2 bool" do
@ -207,15 +206,15 @@ describe DbAccess do
param_value = true
param = Parameter.find_or_create_by(name: param_name)
@db.fill_parameter_values(param, param_value)
@db.fill_parameter_values(param, param_value)
return_val = param.valuebool
expect(return_val).to eq(param_value)
expect(return_val).to eq(param_value)
end
it "read parameter list" do
# write a parameter
# write a parameter
param_name = 'TEST_VALUE_LIST_1'
param_value = 'ABC'
return_val = ''
@ -226,7 +225,7 @@ describe DbAccess do
list = @db.read_parameter_list()
list.each do |param|
if param['name'] == param_name
if param['name'] == param_name
return_val = param['value']
end
end
@ -324,7 +323,7 @@ describe DbAccess do
param.valuestring = nil;
param.valuebool = nil;
$db_write_sync.synchronize do
DbAccess.current.write_sync.synchronize do
param.save
end

View File

@ -4,7 +4,6 @@ require './lib/database/dbaccess.rb'
describe DbAccess do
before do
$db_write_sync = Mutex.new
@db = DbAccess.new('development')
end

View File

@ -8,7 +8,6 @@ describe MessageHandlerEmergencyStop do
let(:message_handler) { MessageHandler.new(StubMessenger.new) }
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -9,7 +9,6 @@ describe MessageHandlerLog do
let(:message) { MessageHandlerMessage.new({}, StubMessenger.new) }
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -9,7 +9,6 @@ describe MessageHandlerMeasurement do
let(:message) { MessageHandlerMessage.new({}, StubMessenger.new) }
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -8,7 +8,6 @@ describe MessageHandlerParameter do
let(:message) { MessageHandlerMessage.new({}, StubMessenger.new) }
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -1,20 +1,13 @@
require 'spec_helper'
require './lib/status.rb'
#require './lib/messaging/messenger.rb'
#require './lib/messagehandler_base'
require './lib/handlers/messagehandler.rb'
require './lib/handlers/messagehandler_schedule.rb'
require './spec/fixtures/stub_messenger.rb'
#require './lib/messagehandler_schedule'
#require './lib/messagehandler_schedule_cmd_line'
#require './lib/handlers/messagehandler_logs.rb'
describe MessageHandlerSchedule do
let(:message) { MessageHandlerMessage.new({}, StubMessenger.new) }
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -9,7 +9,6 @@ describe MessageHandler do
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
$dbaccess = DbAccess.current
$dbaccess.disable_log_to_screen()

View File

@ -14,7 +14,6 @@ describe MessageHandlerStatus do
let(:message) { MessageHandlerMessage.new({}, StubMessenger.new) }
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -7,7 +7,6 @@ require './lib/hardware/gcode/ramps_param.rb'
describe HardwareInterfaceArduino do
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -6,7 +6,6 @@ require './lib/hardware/gcode/ramps_arduino_values_received.rb'
describe HardwareInterfaceArduinoValuesReceived do
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -6,7 +6,6 @@ require './lib/hardware/gcode/ramps_arduino_write_status.rb'
describe HardwareInterfaceArduinoWriteStatus do
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -7,7 +7,6 @@ require './lib/hardware/gcode/ramps_param.rb'
describe HardwareInterfaceArduino do
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -6,7 +6,6 @@ require './lib/hardware/gcode/ramps.rb'
describe HardwareInterface do
before do
$db_write_sync = Mutex.new
DbAccess.current = DbAccess.new('development')
DbAccess.current = DbAccess.current
DbAccess.current.disable_log_to_screen()

View File

@ -2,7 +2,6 @@ system('clear')
puts 'parameter settings'
$shutdown = 0
$db_write_sync = Mutex.new
require 'active_record'
require_relative 'lib/database/dbaccess'