1*** Keywords ***
2Create Machine With Dummy Sensor
3    [Arguments]     ${sensorName}
4    Execute Command                             mach create
5    Execute Command                             machine LoadPlatformDescriptionFromString "${sensorName}: Sensors.DummySensor @ sysbus <0x0, +0x4>"
6
7Create Machine With Multiple Dummy Sensors
8    [Arguments]     ${sensorName1}  ${sensorName2}
9    Execute Command                             mach create
10    Execute Command                             machine LoadPlatformDescriptionFromString "${sensorName1}: Sensors.DummySensor @ sysbus <0x0, +0x4>"
11    Execute Command                             machine LoadPlatformDescriptionFromString "${sensorName2}: Sensors.DummySensor @ sysbus <0x4, +0x4>"
12
13Should List Sensor In Environment Once
14    [Arguments]     ${env}          ${sensorName}
15    ${lines}=   Execute Command                 ${env} GetRegisteredSensorsNames
16    ${result}=  Get Lines Containing String     ${lines}    ${sensorName}
17    ${count}=   Get Line Count                  ${result}
18    Should Be Equal As Integers                 ${count}    1
19
20*** Test Cases ***
21Should List Sensor Once
22    Create Machine With Dummy Sensor            dummySensor1
23    Execute Command                             emulation CreateEnvironment "env1"
24    Execute Command                             machine SetEnvironment env1
25    Should List Sensor In Environment Once      env1        machine-0:sysbus.dummySensor1
26
27Should Set Temperature On Single Sensor
28    Create Machine With Dummy Sensor            dummySensor1
29    Execute Command                             emulation CreateEnvironment "env1"
30    Execute Command                             env1 Temperature 36.6
31    Execute Command                             machine SetEnvironment env1
32    ${temperature}=     Execute Command         sysbus.dummySensor1 Temperature
33    Should Contain                              ${temperature}    36.6
34
35Should Set Temperature On Single Sensor Twice
36    Create Machine With Dummy Sensor            dummySensor1
37    Execute Command                             emulation CreateEnvironment "env1"
38    Execute Command                             env1 Temperature 36.6
39    Execute Command                             machine SetEnvironment env1
40    ${temperature}=     Execute Command         sysbus.dummySensor1 Temperature
41    Should Contain                              ${temperature}    36.6
42    Execute Command                             env1 Temperature 38.1
43    ${temperature}=     Execute Command         sysbus.dummySensor1 Temperature
44    Should Contain                              ${temperature}    38.1
45
46Should Set Temperature And Humidity On Single Sensor
47    Create Machine With Dummy Sensor            dummySensor1
48    Execute Command                             emulation CreateEnvironment "env1"
49    Execute Command                             env1 Temperature 36.6
50    Execute Command                             env1 Humidity 89.5
51    Execute Command                             machine SetEnvironment env1
52    ${temperature}=     Execute Command         sysbus.dummySensor1 Temperature
53    Should Contain                              ${temperature}    36.6
54    ${humidity}=        Execute Command         sysbus.dummySensor1 Humidity
55    Should Contain                              ${humidity}    89.5
56
57Should List Sensor Once If Machine Was Added To Environment Twice
58    Create Machine With Dummy Sensor            dummySensor1
59    Execute Command                             emulation CreateEnvironment "env1"
60    Execute Command                             machine SetEnvironment env1
61    Execute Command                             machine SetEnvironment env1
62    Should List Sensor In Environment Once      env1        machine-0:sysbus.dummySensor1
63
64Should Update Sensor Once If Machine Was Added To Environment Twice
65    Create Machine With Dummy Sensor            dummySensor1
66    Execute Command                             emulation CreateEnvironment "env1"
67    Execute Command                             machine SetEnvironment env1
68    ${count}=    Execute Command                sysbus.dummySensor1 TemperatureUpdateCounter
69    Should Contain                              ${count}    0x00000001
70    Execute Command                             machine SetEnvironment env1
71    ${count}=    Execute Command                sysbus.dummySensor1 TemperatureUpdateCounter
72    Should Contain                              ${count}    0x00000001
73
74
75
76
77
78Should List Two Sensors
79    Create Machine With Multiple Dummy Sensors      dummySensor1    dummySensor2
80    Execute Command                                 emulation CreateEnvironment "env1"
81    Execute Command                                 machine SetEnvironment env1
82    ${lines}=   Execute Command                     env1 GetRegisteredSensorsNames
83    Should Contain                                  ${lines}    machine-0:sysbus.dummySensor1
84    Should Contain                                  ${lines}    machine-0:sysbus.dummySensor2
85
86Should Set Temperature After Machine Reset
87    Create Machine With Dummy Sensor            dummySensor1
88    Execute Command                             emulation CreateEnvironment "env1"
89    Execute Command                             machine SetEnvironment env1
90    Execute Command                             env1 Temperature 55.5
91    Execute Command                             s
92    Execute Command                             machine Reset   #Reset requires the machine to be started
93    Execute Command                             p
94    ${temperature}=    Execute Command          sysbus.dummySensor1 Temperature
95    Should Contain                              ${temperature}    55.5
96
97Should List Two Sensors In Different Environments
98    Create Machine With Multiple Dummy Sensors      dummySensor1    dummySensor2
99    Execute Command                                 emulation CreateEnvironment "env1"
100    Execute Command                                 machine SetEnvironment env1
101    Execute Command                                 emulation CreateEnvironment "env2"
102    Execute Command                                 sysbus.dummySensor2 SetEnvironment env2
103    Should List Sensor In Environment Once          env1        machine-0:sysbus.dummySensor1
104    ${lines}=   Execute Command                     env1 GetRegisteredSensorsNames
105    Should Not Contain                              ${lines}    machine-0:sysbus.dummySensor2
106
107    Should List Sensor In Environment Once          env2        machine-0:sysbus.dummySensor2
108    ${lines}=   Execute Command                     env2 GetRegisteredSensorsNames
109    Should Not Contain                              ${lines}    machine-0:sysbus.dummySensor1
110
111Should Set Temperature On Two Sensors In Different Environments
112    Create Machine With Multiple Dummy Sensors      dummySensor1    dummySensor2
113    Execute Command                                 emulation CreateEnvironment "env1"
114    Execute Command                                 env1 Temperature 36.6
115    Execute Command                                 machine SetEnvironment env1
116    ${temperature}=    Execute Command              sysbus.dummySensor1 Temperature
117    Should Contain                                  ${temperature}    36.6
118    ${temperature}=    Execute Command              sysbus.dummySensor2 Temperature
119    Should Contain                                  ${temperature}    36.6
120    Execute Command                                 emulation CreateEnvironment "env2"
121    Execute Command                                 env2 Temperature 40.5
122    Execute Command                                 sysbus.dummySensor2 SetEnvironment env2
123    ${temperature}=    Execute command              sysbus.dummySensor2 Temperature
124    Should Contain                                  ${temperature}    40.5
125    ${temperature}=    Execute Command              sysbus.dummySensor1 Temperature
126    Should Contain                                  ${temperature}    36.6
127
128Should Set Temperature On Two Sensors In Different Environments After Reset
129    Create Machine With Multiple Dummy Sensors      dummySensor1    dummySensor2
130    Execute Command                                 emulation CreateEnvironment "env1"
131    Execute Command                                 env1 Temperature 36.6
132    Execute Command                                 machine SetEnvironment env1
133    ${temperature}=    Execute Command              sysbus.dummySensor1 Temperature
134    Should Contain                                  ${temperature}    36.6
135    ${temperature}=    Execute Command              sysbus.dummySensor2 Temperature
136    Should Contain                                  ${temperature}    36.6
137    Execute Command                                 emulation CreateEnvironment "env2"
138    Execute Command                                 env2 Temperature 40.5
139    Execute Command                                 sysbus.dummySensor2 SetEnvironment env2
140    Execute Command                                 s
141    Execute command                                 machine Reset
142    Execute Command                                 p
143    ${temperature}=    Execute command              sysbus.dummySensor2 Temperature
144    Should Contain                                  ${temperature}    40.5
145    ${temperature}=    Execute Command              sysbus.dummySensor1 Temperature
146    Should Contain                                  ${temperature}    36.6
147
148
149
150
151
152Should Set Temperature On Sensors Added After Registering An Environment
153    Execute Command                             mach create
154    Execute Command                             emulation CreateEnvironment "env1"
155    Execute Command                             env1 Temperature 36.6
156    Execute Command                             machine SetEnvironment env1
157    Execute Command                             machine LoadPlatformDescriptionFromString "dummySensor1: Sensors.DummySensor @ sysbus <0x4, +0x4>"
158    ${temperature}=     Execute Command         sysbus.dummySensor1 Temperature
159    Should Contain                              ${temperature}    36.6
160
161Should Move Sensors Between Environments
162    Create Machine With Multiple Dummy Sensors      dummySensor1    dummySensor2
163    Execute Command                                 emulation CreateEnvironment "env1"
164    Execute Command                                 emulation CreateEnvironment "env2"
165
166    Execute Command                                 machine SetEnvironment env1
167    ${lines}=   Execute Command                     env1 GetRegisteredSensorsNames
168    Should Contain                                  ${lines}    machine-0:sysbus.dummySensor1
169    Should Contain                                  ${lines}    machine-0:sysbus.dummySensor2
170
171    Execute Command                                 machine SetEnvironment env2
172    ${lines}=   Execute Command                     env2 GetRegisteredSensorsNames
173    Should Contain                                  ${lines}    machine-0:sysbus.dummySensor1
174    Should Contain                                  ${lines}    machine-0:sysbus.dummySensor2
175
176    ${lines}=   Execute Command                     env1 GetRegisteredSensorsNames
177    Should Not Contain                              ${lines}    machine-0:sysbus.dummySensor1
178    Should Not Contain                              ${lines}    machine-0:sysbus.dummySensor2
179
180Should Move Sensor With The Machine
181    Create Machine With Dummy Sensor            dummySensor1
182    Execute Command                             emulation CreateEnvironment "env1"
183    Execute Command                             emulation CreateEnvironment "env2"
184    Execute Command                             emulation CreateEnvironment "env3"
185    Execute Command                             machine SetEnvironment env1
186    Execute Command                             sysbus.dummySensor1 SetEnvironment env2
187    Execute Command                             machine SetEnvironment env3
188    ${lines}=   Execute Command                 env2 GetRegisteredSensorsNames
189    Should Not Contain                          ${lines}    machine-0:sysbus.dummySensor1
190
191Should Move Added Sensor Between Environments
192    Execute Command                             mach create
193    Execute Command                             emulation CreateEnvironment "env1"
194    Execute Command                             emulation CreateEnvironment "env2"
195    Execute Command                             machine SetEnvironment env1
196    Execute Command                             machine LoadPlatformDescriptionFromString "dummySensor1: Sensors.DummySensor @ sysbus <0x0, +0x4>"
197    Execute Command                             machine SetEnvironment env2
198
199    ${lines}=   Execute Command                 env1 GetRegisteredSensorsNames
200    Should Not Contain                          ${lines}    machine-0:sysbus.dummySensor1
201
202    ${lines}=   Execute Command                 env2 GetRegisteredSensorsNames
203    Should Contain                              ${lines}    machine-0:sysbus.dummySensor1
204
205
206
207
208
209Should Not List Removed Sensor
210    Create Machine With Dummy Sensor            dummySensor1
211    Execute Command                             emulation CreateEnvironment "env1"
212    Execute Command                             machine SetEnvironment env1
213    Execute Command                             machine UnregisterFromParent sysbus.dummySensor1
214    ${lines}=   Execute Command                 env1 GetRegisteredSensorsNames
215    Should Not Contain                          ${lines}    machine-0:sysbus.dummySensor1
216
217Should Not List Sensors From Removed Machine
218    Create Machine With Dummy Sensor            dummySensor1
219    Execute Command                             emulation CreateEnvironment "env1"
220    Execute Command                             machine SetEnvironment env1
221    Execute Command                             emulation RemoveMachine "machine-0"
222    ${lines}=   Execute Command                 env1 GetRegisteredSensorsNames
223    Should Not Contain                          ${lines}    machine-0:sysbus.dummySensor1
224
225Should Not List Removed Machine
226    Execute Command                             mach create
227    Execute Command                             emulation CreateEnvironment "env1"
228    Execute Command                             machine SetEnvironment env1
229    Execute Command                             emulation RemoveMachine "machine-0"
230    ${lines}=   Execute Command                 env1 GetRegisteredMachineNames
231    Should Not Contain                          ${lines}    machine-0
232
233Should Not List Sensors From Removed Machine In Different Environment
234    Create Machine With Multiple Dummy Sensors      dummySensor1    dummySensor2
235    Execute Command                                 emulation CreateEnvironment "env1"
236    Execute Command                                 emulation CreateEnvironment "env2"
237    Execute Command                                 machine SetEnvironment env1
238    Execute Command                                 sysbus.dummySensor2 SetEnvironment env2
239    Execute Command                                 emulation RemoveMachine "machine-0"
240    ${lines}=   Execute Command                     env2 GetRegisteredMachineNames
241    Should Not Contain                              ${lines}    machine-0:sysbus.dummySensor2
242
243Should Set Temperature After Sensor Removal
244    Create Machine With Multiple Dummy Sensors      dummySensor1    dummySensor2
245    Execute Command                                 emulation CreateEnvironment "env1"
246    Execute Command                                 machine SetEnvironment env1
247    Execute Command                                 machine UnregisterFromParent sysbus.dummySensor1
248    Execute Command                                 env1 Temperature 55.5
249    ${temperature}=     Execute Command             sysbus.dummySensor2 Temperature
250    Should Contain                                  ${temperature}    55.5
251
252Should Set Temperature On Readded Sensor
253    Create Machine With Dummy Sensor            dummySensor1
254    Execute Command                             emulation CreateEnvironment "env1"
255    Execute Command                             machine SetEnvironment env1
256    Execute Command                             env1 Temperature 55.5
257    Execute Command                             machine UnregisterFromParent sysbus.dummySensor1
258    Execute Command                             machine LoadPlatformDescriptionFromString "dummySensor1: Sensors.DummySensor @ sysbus <0x0, +0x4>"
259    ${temperature}=     Execute Command         sysbus.dummySensor1 Temperature
260    Should Contain                              ${temperature}    55.5
261
262Should Serialize And Set Temperature On Single Sensor
263    Create Machine With Dummy Sensor            dummySensor1
264    Execute Command                             emulation CreateEnvironment "env1"
265    Execute Command                             machine SetEnvironment env1
266    Handle Hot Spot                             Serialize
267    Execute Command                             mach set 0
268    Execute Command                             env1 Temperature 55.5
269    ${temperature}=     Execute Command         sysbus.dummySensor1 Temperature
270    Should Contain                              ${temperature}    55.5
271