summaryrefslogtreecommitdiffstats
path: root/conf.d/project/lua.d/low-can-tests.lua
blob: 985c3439afaaaee1c4222a7bdca8d66ca818d720 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
--[[
    Copyright (C) 2016 "IoT.bzh"
    Author Fulup Ar Foll <fulup@iot.bzh>

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.


    NOTE: strict mode: every global variables should be prefixed by '_'
--]]
package.path = package.path .. ';./var/?.lua'
local lu = require('luaunit')
local src = nil
local arg = nil

-- Static variables should be prefixed with _
_EventHandle = {}

local engine_off_evt_received   = false
local engine_speed_evt_received = false

local clock = os.clock
function sleep(n)  -- seconds
  local t0 = clock()
  while clock() - t0 <= n do end
end

function _evt_catcher_ (source, action, event)
    local match = string.find(event.data.message, "is_engine_on: engine.speed CAN signal found, but engine seems off")
    if match ~= nil then
        engine_off_evt_received = true
    end

    match = string.find(event.data.message, "diagnostic_messages.engine.speed")
    if match ~= nil then
        engine_speed_evt_received = true
    end
end

function _start_afb_logging()
    AFB:servsync(src, "monitor","set", { verbosity = "debug" })
    AFB:servsync(src, "monitor","trace", { add = { api = "low-can", daemon = "vverbose" }})
end

function _stop_afb_logging()
    AFB:servsync(src, "monitor","trace", { drop = true})
end

Test_Engine = {}
    function Test_Engine:test_detection_is_off()
        local responseJ = {}

        _start_afb_logging()

        local err,responseJ = AFB:servsync(src, "low-can","subscribe", { event = "diagnostic_messages.engine.speed" })

        lu.assertStrMatches(responseJ.request.status, "success", nil, nil, "Correctly subscribed to engine.speed signal")

        _stop_afb_logging()

        lu.assertTrue(engine_off_evt_received, "Expected message did not comes up from binder log")
    end

    function Test_Engine:Test_turning_on()
        _start_afb_logging()

        local ret = os.execute("./var/replay_launcher.sh ./var/test1.canreplay")
        lu.assertTrue(ret)
        --sleep(60)
        lu.assertTrue(engine_speed_evt_received, "Engine still off")

        _stop_afb_logging()
    end


function _launch_test (source, args)
    src = source
    arg = args

    os.exit(lu.LuaUnit.run()) -- run the tests!
end