54
54
GEN_TIME_KERNEL_PANIC = "2021_3_28_13_48_49"
55
55
56
56
57
+ REBOOT_CAUSE_UNKNOWN = "Unknown"
58
+ REBOOT_CAUSE_NON_HARDWARE = "Non-Hardware"
59
+ EXPECTED_NON_HARDWARE_REBOOT_CAUSE = {REBOOT_CAUSE_NON_HARDWARE , "N/A" }
60
+ REBOOT_CAUSE_HARDWARE_OTHER = "Hardware - Other"
61
+ EXPECTED_HARDWARE_REBOOT_CAUSE = {REBOOT_CAUSE_HARDWARE_OTHER , "" }
62
+
57
63
EXPECTED_PARSE_WARMFAST_REBOOT_FROM_PROC_CMDLINE = "warm-reboot"
58
64
EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_USER = "User issued 'warm-reboot' command [User: admin, Time: Mon Nov 2 22:37:45 UTC 2020]"
59
65
EXPECTED_FIND_FIRSTBOOT_VERSION = " (First boot of SONiC version 20191130.52)"
60
66
EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_FIRSTBOOT = "Unknown (First boot of SONiC version 20191130.52)"
61
- EXPECTED_HARDWARE_REBOOT_CAUSE = {"warm-reboot" , "" }
62
67
63
68
EXPECTED_WATCHDOG_REBOOT_CAUSE_DICT = {'comment' : '' , 'gen_time' : '2020_10_22_03_15_08' , 'cause' : 'Watchdog' , 'user' : 'N/A' , 'time' : 'N/A' }
64
69
EXPECTED_USER_REBOOT_CAUSE_DICT = {'comment' : '' , 'gen_time' : '2020_10_22_03_14_07' , 'cause' : 'reboot' , 'user' : 'admin' , 'time' : 'Thu Oct 22 03:11:08 UTC 2020' }
@@ -104,7 +109,12 @@ def test_find_proc_cmdline_reboot_cause(self):
104
109
def test_find_hardware_reboot_cause (self ):
105
110
with mock .patch ("determine_reboot_cause.get_reboot_cause_from_platform" , return_value = ("Powerloss" , None )):
106
111
result = determine_reboot_cause .find_hardware_reboot_cause ()
107
- assert result == "Powerloss (None)"
112
+ assert result == "Powerloss"
113
+
114
+ def test_find_hardware_reboot_cause_with_minor (self ):
115
+ with mock .patch ("determine_reboot_cause.get_reboot_cause_from_platform" , return_value = ("Powerloss" , "under-voltage" )):
116
+ result = determine_reboot_cause .find_hardware_reboot_cause ()
117
+ assert result == "Powerloss (under-voltage)"
108
118
109
119
def test_get_reboot_cause_dict_watchdog (self ):
110
120
reboot_cause_dict = determine_reboot_cause .get_reboot_cause_dict (REBOOT_CAUSE_WATCHDOG , "" , GEN_TIME_WATCHDOG )
@@ -117,3 +127,52 @@ def test_get_reboot_cause_dict_user(self):
117
127
def test_get_reboot_cause_dict_kernel_panic (self ):
118
128
reboot_cause_dict = determine_reboot_cause .get_reboot_cause_dict (REBOOT_CAUSE_KERNEL_PANIC , "" , GEN_TIME_KERNEL_PANIC )
119
129
assert reboot_cause_dict == EXPECTED_KERNEL_PANIC_REBOOT_CAUSE_DICT
130
+
131
+ def test_determine_reboot_cause_hardware (self ):
132
+ with mock .patch ("determine_reboot_cause.find_proc_cmdline_reboot_cause" , return_value = None ):
133
+ with mock .patch ("determine_reboot_cause.find_software_reboot_cause" , return_value = REBOOT_CAUSE_UNKNOWN ):
134
+ with mock .patch ("determine_reboot_cause.find_hardware_reboot_cause" , return_value = EXPECTED_HARDWARE_REBOOT_CAUSE ):
135
+ previous_reboot_cause , additional_reboot_info = determine_reboot_cause .determine_reboot_cause ()
136
+ assert previous_reboot_cause == EXPECTED_HARDWARE_REBOOT_CAUSE
137
+ assert additional_reboot_info == "N/A"
138
+
139
+ def test_determine_reboot_cause_software (self ):
140
+ with mock .patch ("determine_reboot_cause.find_proc_cmdline_reboot_cause" , return_value = None ):
141
+ with mock .patch ("determine_reboot_cause.find_software_reboot_cause" , return_value = EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_USER ):
142
+ with mock .patch ("determine_reboot_cause.find_hardware_reboot_cause" , return_value = EXPECTED_NON_HARDWARE_REBOOT_CAUSE ):
143
+ previous_reboot_cause , additional_info = determine_reboot_cause .determine_reboot_cause ()
144
+ assert previous_reboot_cause == EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_USER
145
+ assert additional_info == "N/A"
146
+
147
+ def test_determine_reboot_cause_cmdline_software (self ):
148
+ with mock .patch ("determine_reboot_cause.find_proc_cmdline_reboot_cause" , return_value = EXPECTED_PARSE_WARMFAST_REBOOT_FROM_PROC_CMDLINE ):
149
+ with mock .patch ("determine_reboot_cause.find_software_reboot_cause" , return_value = EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_USER ):
150
+ with mock .patch ("determine_reboot_cause.find_hardware_reboot_cause" , return_value = EXPECTED_NON_HARDWARE_REBOOT_CAUSE ):
151
+ previous_reboot_cause , additional_info = determine_reboot_cause .determine_reboot_cause ()
152
+ assert previous_reboot_cause == EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_USER
153
+ assert additional_info == "N/A"
154
+
155
+ def test_determine_reboot_cause_cmdline_no_software (self ):
156
+ with mock .patch ("determine_reboot_cause.find_proc_cmdline_reboot_cause" , return_value = EXPECTED_PARSE_WARMFAST_REBOOT_FROM_PROC_CMDLINE ):
157
+ with mock .patch ("determine_reboot_cause.find_software_reboot_cause" , return_value = REBOOT_CAUSE_UNKNOWN ):
158
+ with mock .patch ("determine_reboot_cause.find_hardware_reboot_cause" , return_value = EXPECTED_NON_HARDWARE_REBOOT_CAUSE ):
159
+ previous_reboot_cause , additional_info = determine_reboot_cause .determine_reboot_cause ()
160
+ assert previous_reboot_cause == EXPECTED_PARSE_WARMFAST_REBOOT_FROM_PROC_CMDLINE
161
+ assert additional_info == "N/A"
162
+
163
+ def test_determine_reboot_cause_cmdline_hardware (self ):
164
+ with mock .patch ("determine_reboot_cause.find_proc_cmdline_reboot_cause" , return_value = EXPECTED_PARSE_WARMFAST_REBOOT_FROM_PROC_CMDLINE ):
165
+ with mock .patch ("determine_reboot_cause.find_software_reboot_cause" , return_value = REBOOT_CAUSE_UNKNOWN ):
166
+ with mock .patch ("determine_reboot_cause.find_hardware_reboot_cause" , return_value = EXPECTED_HARDWARE_REBOOT_CAUSE ):
167
+ previous_reboot_cause , additional_info = determine_reboot_cause .determine_reboot_cause ()
168
+ assert previous_reboot_cause == EXPECTED_HARDWARE_REBOOT_CAUSE
169
+ assert additional_info == EXPECTED_PARSE_WARMFAST_REBOOT_FROM_PROC_CMDLINE
170
+
171
+ def test_determine_reboot_cause_software_hardware (self ):
172
+ with mock .patch ("determine_reboot_cause.find_proc_cmdline_reboot_cause" , return_value = EXPECTED_PARSE_WARMFAST_REBOOT_FROM_PROC_CMDLINE ):
173
+ with mock .patch ("determine_reboot_cause.find_software_reboot_cause" , return_value = EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_USER ):
174
+ with mock .patch ("determine_reboot_cause.find_hardware_reboot_cause" , return_value = EXPECTED_HARDWARE_REBOOT_CAUSE ):
175
+ previous_reboot_cause , additional_info = determine_reboot_cause .determine_reboot_cause ()
176
+ assert previous_reboot_cause == EXPECTED_HARDWARE_REBOOT_CAUSE
177
+ assert additional_info == EXPECTED_FIND_SOFTWARE_REBOOT_CAUSE_USER
178
+
0 commit comments