framework_gem 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (872) hide show
  1. checksums.yaml +7 -0
  2. data/lib/EXECUTION_ENGINE.md +282 -0
  3. data/lib/Gemfile +12 -0
  4. data/lib/README.md +138 -0
  5. data/lib/User_Lib/helpers/helpers.rb +13 -0
  6. data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_black_rois.rb +7 -0
  7. data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_color_rois.rb +9 -0
  8. data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_image_rois.rb +7 -0
  9. data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_rois.rb +23 -0
  10. data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_text_rois.rb +48 -0
  11. data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_video_rois.rb +11 -0
  12. data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_black_rois.rb +7 -0
  13. data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_color_rois.rb +7 -0
  14. data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_image_rois.rb +7 -0
  15. data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_rois.rb +23 -0
  16. data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_text_rois.rb +7 -0
  17. data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_video_rois.rb +11 -0
  18. data/lib/User_Lib/rois/apple_tv/apple_tv_black_rois.rb +7 -0
  19. data/lib/User_Lib/rois/apple_tv/apple_tv_color_rois.rb +7 -0
  20. data/lib/User_Lib/rois/apple_tv/apple_tv_image_rois.rb +7 -0
  21. data/lib/User_Lib/rois/apple_tv/apple_tv_rois.rb +23 -0
  22. data/lib/User_Lib/rois/apple_tv/apple_tv_text_rois.rb +7 -0
  23. data/lib/User_Lib/rois/apple_tv/apple_tv_video_rois.rb +7 -0
  24. data/lib/User_Lib/rois/black_rois.rb +33 -0
  25. data/lib/User_Lib/rois/color_rois.rb +38 -0
  26. data/lib/User_Lib/rois/dta/dta_1080/dta_1080_black_rois.rb +8 -0
  27. data/lib/User_Lib/rois/dta/dta_1080/dta_1080_color_rois.rb +8 -0
  28. data/lib/User_Lib/rois/dta/dta_1080/dta_1080_image_rois.rb +8 -0
  29. data/lib/User_Lib/rois/dta/dta_1080/dta_1080_rois.rb +26 -0
  30. data/lib/User_Lib/rois/dta/dta_1080/dta_1080_text_rois.rb +8 -0
  31. data/lib/User_Lib/rois/dta/dta_1080/dta_1080_video_rois.rb +8 -0
  32. data/lib/User_Lib/rois/dta/dta_720/dta_720_black_rois.rb +8 -0
  33. data/lib/User_Lib/rois/dta/dta_720/dta_720_color_rois.rb +8 -0
  34. data/lib/User_Lib/rois/dta/dta_720/dta_720_image_rois.rb +8 -0
  35. data/lib/User_Lib/rois/dta/dta_720/dta_720_rois.rb +26 -0
  36. data/lib/User_Lib/rois/dta/dta_720/dta_720_text_rois.rb +8 -0
  37. data/lib/User_Lib/rois/dta/dta_720/dta_720_video_rois.rb +8 -0
  38. data/lib/User_Lib/rois/dta/dta_black_rois.rb +9 -0
  39. data/lib/User_Lib/rois/dta/dta_color_rois.rb +9 -0
  40. data/lib/User_Lib/rois/dta/dta_image_rois.rb +9 -0
  41. data/lib/User_Lib/rois/dta/dta_rois.rb +26 -0
  42. data/lib/User_Lib/rois/dta/dta_text_rois.rb +9 -0
  43. data/lib/User_Lib/rois/dta/dta_video_rois.rb +9 -0
  44. data/lib/User_Lib/rois/image_rois.rb +38 -0
  45. data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_black_rois.rb +8 -0
  46. data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_color_rois.rb +8 -0
  47. data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_image_rois.rb +8 -0
  48. data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_rois.rb +26 -0
  49. data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_text_rois.rb +8 -0
  50. data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_video_rois.rb +8 -0
  51. data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_black_rois.rb +8 -0
  52. data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_color_rois.rb +8 -0
  53. data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_image_rois.rb +8 -0
  54. data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_rois.rb +26 -0
  55. data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_text_rois.rb +8 -0
  56. data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_video_rois.rb +8 -0
  57. data/lib/User_Lib/rois/mdn/mdn_black_rois.rb +9 -0
  58. data/lib/User_Lib/rois/mdn/mdn_color_rois.rb +9 -0
  59. data/lib/User_Lib/rois/mdn/mdn_image_rois.rb +9 -0
  60. data/lib/User_Lib/rois/mdn/mdn_rois.rb +26 -0
  61. data/lib/User_Lib/rois/mdn/mdn_text_rois.rb +13 -0
  62. data/lib/User_Lib/rois/mdn/mdn_video_rois.rb +9 -0
  63. data/lib/User_Lib/rois/mobile/android/android_black_rois.rb +8 -0
  64. data/lib/User_Lib/rois/mobile/android/android_color_rois.rb +8 -0
  65. data/lib/User_Lib/rois/mobile/android/android_image_rois.rb +8 -0
  66. data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_black_rois.rb +8 -0
  67. data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_color_rois.rb +8 -0
  68. data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_image_rois.rb +43 -0
  69. data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_rois.rb +22 -0
  70. data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_text_rois.rb +8 -0
  71. data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_video_rois.rb +8 -0
  72. data/lib/User_Lib/rois/mobile/android/android_rois.rb +22 -0
  73. data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_black_rois.rb +8 -0
  74. data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_color_rois.rb +8 -0
  75. data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_image_rois.rb +54 -0
  76. data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_rois.rb +22 -0
  77. data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_text_rois.rb +8 -0
  78. data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_video_rois.rb +8 -0
  79. data/lib/User_Lib/rois/mobile/android/android_text_rois.rb +8 -0
  80. data/lib/User_Lib/rois/mobile/android/android_video_rois.rb +8 -0
  81. data/lib/User_Lib/rois/mobile/ios/ios_black_rois.rb +8 -0
  82. data/lib/User_Lib/rois/mobile/ios/ios_color_rois.rb +8 -0
  83. data/lib/User_Lib/rois/mobile/ios/ios_image_rois.rb +8 -0
  84. data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_black_rois.rb +8 -0
  85. data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_color_rois.rb +8 -0
  86. data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_image_rois.rb +8 -0
  87. data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_rois.rb +22 -0
  88. data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_text_rois.rb +8 -0
  89. data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_video_rois.rb +8 -0
  90. data/lib/User_Lib/rois/mobile/ios/ios_rois.rb +22 -0
  91. data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_black_rois.rb +8 -0
  92. data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_color_rois.rb +8 -0
  93. data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_image_rois.rb +8 -0
  94. data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_rois.rb +22 -0
  95. data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_text_rois.rb +8 -0
  96. data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_video_rois.rb +8 -0
  97. data/lib/User_Lib/rois/mobile/ios/ios_text_rois.rb +8 -0
  98. data/lib/User_Lib/rois/mobile/ios/ios_video_rois.rb +8 -0
  99. data/lib/User_Lib/rois/mobile/mobile_black_rois.rb +8 -0
  100. data/lib/User_Lib/rois/mobile/mobile_color_rois.rb +12 -0
  101. data/lib/User_Lib/rois/mobile/mobile_image_rois.rb +38 -0
  102. data/lib/User_Lib/rois/mobile/mobile_rois.rb +22 -0
  103. data/lib/User_Lib/rois/mobile/mobile_text_rois.rb +8 -0
  104. data/lib/User_Lib/rois/mobile/mobile_video_rois.rb +8 -0
  105. data/lib/User_Lib/rois/passport/passport_1080/passport_1080_black_rois.rb +7 -0
  106. data/lib/User_Lib/rois/passport/passport_1080/passport_1080_color_rois.rb +9 -0
  107. data/lib/User_Lib/rois/passport/passport_1080/passport_1080_image_rois.rb +7 -0
  108. data/lib/User_Lib/rois/passport/passport_1080/passport_1080_rois.rb +23 -0
  109. data/lib/User_Lib/rois/passport/passport_1080/passport_1080_text_rois.rb +8 -0
  110. data/lib/User_Lib/rois/passport/passport_1080/passport_1080_video_rois.rb +8 -0
  111. data/lib/User_Lib/rois/passport/passport_720/passport_720_black_rois.rb +7 -0
  112. data/lib/User_Lib/rois/passport/passport_720/passport_720_color_rois.rb +7 -0
  113. data/lib/User_Lib/rois/passport/passport_720/passport_720_image_rois.rb +7 -0
  114. data/lib/User_Lib/rois/passport/passport_720/passport_720_rois.rb +23 -0
  115. data/lib/User_Lib/rois/passport/passport_720/passport_720_text_rois.rb +7 -0
  116. data/lib/User_Lib/rois/passport/passport_720/passport_720_video_rois.rb +7 -0
  117. data/lib/User_Lib/rois/passport/passport_black_rois.rb +7 -0
  118. data/lib/User_Lib/rois/passport/passport_color_rois.rb +7 -0
  119. data/lib/User_Lib/rois/passport/passport_image_rois.rb +7 -0
  120. data/lib/User_Lib/rois/passport/passport_rois.rb +23 -0
  121. data/lib/User_Lib/rois/passport/passport_text_rois.rb +7 -0
  122. data/lib/User_Lib/rois/passport/passport_video_rois.rb +7 -0
  123. data/lib/User_Lib/rois/rois.rb +22 -0
  124. data/lib/User_Lib/rois/roku/roku_720/roku_720_black_rois.rb +37 -0
  125. data/lib/User_Lib/rois/roku/roku_720/roku_720_color_rois.rb +336 -0
  126. data/lib/User_Lib/rois/roku/roku_720/roku_720_image_rois.rb +235 -0
  127. data/lib/User_Lib/rois/roku/roku_720/roku_720_rois.rb +23 -0
  128. data/lib/User_Lib/rois/roku/roku_720/roku_720_text_rois.rb +1523 -0
  129. data/lib/User_Lib/rois/roku/roku_720/roku_720_video_rois.rb +32 -0
  130. data/lib/User_Lib/rois/roku/roku_black_rois.rb +14 -0
  131. data/lib/User_Lib/rois/roku/roku_color_rois.rb +9 -0
  132. data/lib/User_Lib/rois/roku/roku_image_rois.rb +13 -0
  133. data/lib/User_Lib/rois/roku/roku_rois.rb +23 -0
  134. data/lib/User_Lib/rois/roku/roku_text_rois.rb +9 -0
  135. data/lib/User_Lib/rois/roku/roku_video_rois.rb +9 -0
  136. data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_black_rois.rb +12 -0
  137. data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_color_rois.rb +11 -0
  138. data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_image_rois.rb +12 -0
  139. data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_rois.rb +23 -0
  140. data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_text_rois.rb +12 -0
  141. data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_video_rois.rb +12 -0
  142. data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_black_rois.rb +12 -0
  143. data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_color_rois.rb +12 -0
  144. data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_image_rois.rb +12 -0
  145. data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_rois.rb +23 -0
  146. data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_text_rois.rb +12 -0
  147. data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_video_rois.rb +12 -0
  148. data/lib/User_Lib/rois/roku_tv/roku_tv_black_rois.rb +12 -0
  149. data/lib/User_Lib/rois/roku_tv/roku_tv_color_rois.rb +12 -0
  150. data/lib/User_Lib/rois/roku_tv/roku_tv_image_rois.rb +12 -0
  151. data/lib/User_Lib/rois/roku_tv/roku_tv_rois.rb +23 -0
  152. data/lib/User_Lib/rois/roku_tv/roku_tv_text_rois.rb +12 -0
  153. data/lib/User_Lib/rois/roku_tv/roku_tv_video_rois.rb +12 -0
  154. data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_black_rois.rb +13 -0
  155. data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_color_rois.rb +29 -0
  156. data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_image_rois.rb +9 -0
  157. data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_rois.rb +23 -0
  158. data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_text_rois.rb +92 -0
  159. data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_video_rois.rb +11 -0
  160. data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_black_rois.rb +9 -0
  161. data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_color_rois.rb +9 -0
  162. data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_image_rois.rb +9 -0
  163. data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_rois.rb +23 -0
  164. data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_text_rois.rb +12 -0
  165. data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_video_rois.rb +11 -0
  166. data/lib/User_Lib/rois/samsung_tv/samsung_tv_black_rois.rb +9 -0
  167. data/lib/User_Lib/rois/samsung_tv/samsung_tv_color_rois.rb +9 -0
  168. data/lib/User_Lib/rois/samsung_tv/samsung_tv_image_rois.rb +9 -0
  169. data/lib/User_Lib/rois/samsung_tv/samsung_tv_rois.rb +23 -0
  170. data/lib/User_Lib/rois/samsung_tv/samsung_tv_text_rois.rb +12 -0
  171. data/lib/User_Lib/rois/samsung_tv/samsung_tv_video_rois.rb +9 -0
  172. data/lib/User_Lib/rois/sara/sara_1080/sara_1080_black_rois.rb +8 -0
  173. data/lib/User_Lib/rois/sara/sara_1080/sara_1080_color_rois.rb +8 -0
  174. data/lib/User_Lib/rois/sara/sara_1080/sara_1080_image_rois.rb +8 -0
  175. data/lib/User_Lib/rois/sara/sara_1080/sara_1080_rois.rb +26 -0
  176. data/lib/User_Lib/rois/sara/sara_1080/sara_1080_text_rois.rb +8 -0
  177. data/lib/User_Lib/rois/sara/sara_1080/sara_1080_video_rois.rb +8 -0
  178. data/lib/User_Lib/rois/sara/sara_720/sara_720_black_rois.rb +8 -0
  179. data/lib/User_Lib/rois/sara/sara_720/sara_720_color_rois.rb +8 -0
  180. data/lib/User_Lib/rois/sara/sara_720/sara_720_image_rois.rb +8 -0
  181. data/lib/User_Lib/rois/sara/sara_720/sara_720_rois.rb +26 -0
  182. data/lib/User_Lib/rois/sara/sara_720/sara_720_text_rois.rb +8 -0
  183. data/lib/User_Lib/rois/sara/sara_720/sara_720_video_rois.rb +8 -0
  184. data/lib/User_Lib/rois/sara/sara_black_rois.rb +9 -0
  185. data/lib/User_Lib/rois/sara/sara_color_rois.rb +9 -0
  186. data/lib/User_Lib/rois/sara/sara_image_rois.rb +9 -0
  187. data/lib/User_Lib/rois/sara/sara_rois.rb +26 -0
  188. data/lib/User_Lib/rois/sara/sara_text_rois.rb +9 -0
  189. data/lib/User_Lib/rois/sara/sara_video_rois.rb +9 -0
  190. data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_black_rois.rb +9 -0
  191. data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_color_rois.rb +17 -0
  192. data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_image_rois.rb +19 -0
  193. data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_rois.rb +23 -0
  194. data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_text_rois.rb +47 -0
  195. data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_video_rois.rb +23 -0
  196. data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_black_rois.rb +9 -0
  197. data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_color_rois.rb +9 -0
  198. data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_image_rois.rb +9 -0
  199. data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_rois.rb +23 -0
  200. data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_text_rois.rb +17 -0
  201. data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_video_rois.rb +11 -0
  202. data/lib/User_Lib/rois/stb/iguide/iguide_black_rois.rb +9 -0
  203. data/lib/User_Lib/rois/stb/iguide/iguide_color_rois.rb +9 -0
  204. data/lib/User_Lib/rois/stb/iguide/iguide_image_rois.rb +9 -0
  205. data/lib/User_Lib/rois/stb/iguide/iguide_rois.rb +23 -0
  206. data/lib/User_Lib/rois/stb/iguide/iguide_text_rois.rb +9 -0
  207. data/lib/User_Lib/rois/stb/iguide/iguide_video_rois.rb +9 -0
  208. data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_black_rois.rb +8 -0
  209. data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_color_rois.rb +8 -0
  210. data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_image_rois.rb +12 -0
  211. data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_rois.rb +23 -0
  212. data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_text_rois.rb +23 -0
  213. data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_video_rois.rb +11 -0
  214. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_black_rois.rb +46 -0
  215. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_color_rois.rb +142 -0
  216. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_image_rois.rb +103 -0
  217. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_black_rois.rb +6 -0
  218. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_color_rois.rb +6 -0
  219. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_image_rois.rb +6 -0
  220. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_rois.rb +23 -0
  221. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_text_rois.rb +7 -0
  222. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_video_rois.rb +7 -0
  223. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_rois.rb +23 -0
  224. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_black_rois.rb +6 -0
  225. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_color_rois.rb +6 -0
  226. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_image_rois.rb +6 -0
  227. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_rois.rb +23 -0
  228. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_text_rois.rb +7 -0
  229. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_video_rois.rb +7 -0
  230. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_black_rois.rb +6 -0
  231. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_color_rois.rb +77 -0
  232. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_image_rois.rb +67 -0
  233. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_rois.rb +23 -0
  234. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_text_rois.rb +159 -0
  235. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_video_rois.rb +17 -0
  236. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_text_rois.rb +221 -0
  237. data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_video_rois.rb +26 -0
  238. data/lib/User_Lib/rois/stb/odn/odn_black_rois.rb +10 -0
  239. data/lib/User_Lib/rois/stb/odn/odn_color_rois.rb +10 -0
  240. data/lib/User_Lib/rois/stb/odn/odn_image_rois.rb +58 -0
  241. data/lib/User_Lib/rois/stb/odn/odn_rois.rb +23 -0
  242. data/lib/User_Lib/rois/stb/odn/odn_text_rois.rb +70 -0
  243. data/lib/User_Lib/rois/stb/odn/odn_video_rois.rb +19 -0
  244. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_black_rois.rb +16 -0
  245. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_color_rois.rb +373 -0
  246. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_black_rois.rb +7 -0
  247. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_color_rois.rb +7 -0
  248. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_image_rois.rb +7 -0
  249. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_rois.rb +23 -0
  250. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_text_rois.rb +7 -0
  251. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_video_rois.rb +7 -0
  252. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_black_rois.rb +8 -0
  253. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_color_rois.rb +8 -0
  254. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_image_rois.rb +8 -0
  255. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_rois.rb +26 -0
  256. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_text_rois.rb +8 -0
  257. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_video_rois.rb +8 -0
  258. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_black_rois.rb +8 -0
  259. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_color_rois.rb +8 -0
  260. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_image_rois.rb +8 -0
  261. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_rois.rb +26 -0
  262. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_text_rois.rb +8 -0
  263. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_video_rois.rb +8 -0
  264. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_black_rois.rb +8 -0
  265. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_color_rois.rb +8 -0
  266. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_image_rois.rb +8 -0
  267. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_rois.rb +26 -0
  268. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_text_rois.rb +8 -0
  269. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_video_rois.rb +8 -0
  270. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_image_rois.rb +1592 -0
  271. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_black_rois.rb +7 -0
  272. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_color_rois.rb +7 -0
  273. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_image_rois.rb +7 -0
  274. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_rois.rb +23 -0
  275. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_text_rois.rb +7 -0
  276. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_video_rois.rb +7 -0
  277. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_rois.rb +23 -0
  278. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_text_rois.rb +2489 -0
  279. data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_video_rois.rb +64 -0
  280. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_black_rois.rb +7 -0
  281. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_color_rois.rb +63 -0
  282. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_black_rois.rb +8 -0
  283. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_color_rois.rb +8 -0
  284. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_image_rois.rb +8 -0
  285. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_rois.rb +26 -0
  286. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_text_rois.rb +8 -0
  287. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_video_rois.rb +8 -0
  288. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_black_rois.rb +8 -0
  289. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_color_rois.rb +8 -0
  290. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_image_rois.rb +8 -0
  291. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_rois.rb +26 -0
  292. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_text_rois.rb +8 -0
  293. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_video_rois.rb +8 -0
  294. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_black_rois.rb +8 -0
  295. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_color_rois.rb +8 -0
  296. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_image_rois.rb +8 -0
  297. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_rois.rb +26 -0
  298. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_text_rois.rb +8 -0
  299. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_video_rois.rb +8 -0
  300. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_image_rois.rb +117 -0
  301. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_rois.rb +23 -0
  302. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_text_rois.rb +84 -0
  303. data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_video_rois.rb +35 -0
  304. data/lib/User_Lib/rois/stb/spectrum/spectrum_black_rois.rb +9 -0
  305. data/lib/User_Lib/rois/stb/spectrum/spectrum_color_rois.rb +17 -0
  306. data/lib/User_Lib/rois/stb/spectrum/spectrum_image_rois.rb +49 -0
  307. data/lib/User_Lib/rois/stb/spectrum/spectrum_rois.rb +23 -0
  308. data/lib/User_Lib/rois/stb/spectrum/spectrum_text_rois.rb +51 -0
  309. data/lib/User_Lib/rois/stb/spectrum/spectrum_video_rois.rb +9 -0
  310. data/lib/User_Lib/rois/stb/stb_black_rois.rb +9 -0
  311. data/lib/User_Lib/rois/stb/stb_color_rois.rb +9 -0
  312. data/lib/User_Lib/rois/stb/stb_image_rois.rb +9 -0
  313. data/lib/User_Lib/rois/stb/stb_rois.rb +23 -0
  314. data/lib/User_Lib/rois/stb/stb_text_rois.rb +9 -0
  315. data/lib/User_Lib/rois/stb/stb_video_rois.rb +9 -0
  316. data/lib/User_Lib/rois/template.txt +23 -0
  317. data/lib/User_Lib/rois/text_rois.rb +36 -0
  318. data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_black_rois.rb +7 -0
  319. data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_color_rois.rb +9 -0
  320. data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_image_rois.rb +7 -0
  321. data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_rois.rb +23 -0
  322. data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_text_rois.rb +9 -0
  323. data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_video_rois.rb +7 -0
  324. data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_black_rois.rb +7 -0
  325. data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_color_rois.rb +7 -0
  326. data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_image_rois.rb +7 -0
  327. data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_rois.rb +23 -0
  328. data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_text_rois.rb +7 -0
  329. data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_video_rois.rb +7 -0
  330. data/lib/User_Lib/rois/tivo/tivo_black_rois.rb +7 -0
  331. data/lib/User_Lib/rois/tivo/tivo_color_rois.rb +7 -0
  332. data/lib/User_Lib/rois/tivo/tivo_image_rois.rb +7 -0
  333. data/lib/User_Lib/rois/tivo/tivo_rois.rb +23 -0
  334. data/lib/User_Lib/rois/tivo/tivo_text_rois.rb +7 -0
  335. data/lib/User_Lib/rois/tivo/tivo_video_rois.rb +7 -0
  336. data/lib/User_Lib/rois/video_rois.rb +33 -0
  337. data/lib/User_Lib/screen/apple_tv/apple_tv_dvr.rb +25 -0
  338. data/lib/User_Lib/screen/apple_tv/apple_tv_guide.rb +25 -0
  339. data/lib/User_Lib/screen/apple_tv/apple_tv_library.rb +25 -0
  340. data/lib/User_Lib/screen/apple_tv/apple_tv_live_tv.rb +17 -0
  341. data/lib/User_Lib/screen/apple_tv/apple_tv_login.rb +24 -0
  342. data/lib/User_Lib/screen/apple_tv/apple_tv_main_menu.rb +25 -0
  343. data/lib/User_Lib/screen/apple_tv/apple_tv_mini_guide.rb +25 -0
  344. data/lib/User_Lib/screen/apple_tv/apple_tv_movies.rb +25 -0
  345. data/lib/User_Lib/screen/apple_tv/apple_tv_on_demand.rb +25 -0
  346. data/lib/User_Lib/screen/apple_tv/apple_tv_parental_controls.rb +25 -0
  347. data/lib/User_Lib/screen/apple_tv/apple_tv_product_page.rb +25 -0
  348. data/lib/User_Lib/screen/apple_tv/apple_tv_screen.rb +23 -0
  349. data/lib/User_Lib/screen/apple_tv/apple_tv_search.rb +31 -0
  350. data/lib/User_Lib/screen/apple_tv/apple_tv_settings.rb +25 -0
  351. data/lib/User_Lib/screen/apple_tv/apple_tv_tv_shows.rb +25 -0
  352. data/lib/User_Lib/screen/apple_tv/apple_tv_video_store.rb +25 -0
  353. data/lib/User_Lib/screen/dta/dta_dvr.rb +26 -0
  354. data/lib/User_Lib/screen/dta/dta_guide.rb +26 -0
  355. data/lib/User_Lib/screen/dta/dta_library.rb +26 -0
  356. data/lib/User_Lib/screen/dta/dta_live_tv.rb +26 -0
  357. data/lib/User_Lib/screen/dta/dta_log_in.rb +26 -0
  358. data/lib/User_Lib/screen/dta/dta_main_menu.rb +26 -0
  359. data/lib/User_Lib/screen/dta/dta_mini_guide.rb +26 -0
  360. data/lib/User_Lib/screen/dta/dta_movies.rb +26 -0
  361. data/lib/User_Lib/screen/dta/dta_on_demand.rb +26 -0
  362. data/lib/User_Lib/screen/dta/dta_parental_controls.rb +26 -0
  363. data/lib/User_Lib/screen/dta/dta_product_page.rb +26 -0
  364. data/lib/User_Lib/screen/dta/dta_screen.rb +24 -0
  365. data/lib/User_Lib/screen/dta/dta_search.rb +26 -0
  366. data/lib/User_Lib/screen/dta/dta_settings.rb +26 -0
  367. data/lib/User_Lib/screen/dta/dta_tv_shows.rb +26 -0
  368. data/lib/User_Lib/screen/dta/dta_video_store.rb +26 -0
  369. data/lib/User_Lib/screen/mdn/mdn_dvr.rb +26 -0
  370. data/lib/User_Lib/screen/mdn/mdn_guide.rb +26 -0
  371. data/lib/User_Lib/screen/mdn/mdn_library.rb +26 -0
  372. data/lib/User_Lib/screen/mdn/mdn_live_tv.rb +26 -0
  373. data/lib/User_Lib/screen/mdn/mdn_log_in.rb +26 -0
  374. data/lib/User_Lib/screen/mdn/mdn_main_menu.rb +26 -0
  375. data/lib/User_Lib/screen/mdn/mdn_mini_guide.rb +26 -0
  376. data/lib/User_Lib/screen/mdn/mdn_movies.rb +26 -0
  377. data/lib/User_Lib/screen/mdn/mdn_on_demand.rb +26 -0
  378. data/lib/User_Lib/screen/mdn/mdn_parental_controls.rb +26 -0
  379. data/lib/User_Lib/screen/mdn/mdn_product_page.rb +26 -0
  380. data/lib/User_Lib/screen/mdn/mdn_screen.rb +24 -0
  381. data/lib/User_Lib/screen/mdn/mdn_search.rb +26 -0
  382. data/lib/User_Lib/screen/mdn/mdn_settings.rb +26 -0
  383. data/lib/User_Lib/screen/mdn/mdn_tv_shows.rb +26 -0
  384. data/lib/User_Lib/screen/mdn/mdn_video_store.rb +26 -0
  385. data/lib/User_Lib/screen/mobile/android/android_devices.rb +35 -0
  386. data/lib/User_Lib/screen/mobile/android/android_dvr.rb +337 -0
  387. data/lib/User_Lib/screen/mobile/android/android_favorites.rb +164 -0
  388. data/lib/User_Lib/screen/mobile/android/android_guide.rb +256 -0
  389. data/lib/User_Lib/screen/mobile/android/android_live_tv.rb +372 -0
  390. data/lib/User_Lib/screen/mobile/android/android_login.rb +111 -0
  391. data/lib/User_Lib/screen/mobile/android/android_main_menu.rb +53 -0
  392. data/lib/User_Lib/screen/mobile/android/android_on_demand.rb +402 -0
  393. data/lib/User_Lib/screen/mobile/android/android_parental_controls.rb +73 -0
  394. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_dvr.rb +31 -0
  395. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_guide.rb +39 -0
  396. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_live_tv.rb +104 -0
  397. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_main_menu.rb +27 -0
  398. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_on_demand.rb +35 -0
  399. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_product_page.rb +7 -0
  400. data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_search.rb +26 -0
  401. data/lib/User_Lib/screen/mobile/android/android_privacy_legal.rb +54 -0
  402. data/lib/User_Lib/screen/mobile/android/android_product_page.rb +484 -0
  403. data/lib/User_Lib/screen/mobile/android/android_screen.rb +56 -0
  404. data/lib/User_Lib/screen/mobile/android/android_search.rb +39 -0
  405. data/lib/User_Lib/screen/mobile/android/android_settings.rb +90 -0
  406. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_dvr.rb +58 -0
  407. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_guide.rb +24 -0
  408. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_live_tv.rb +24 -0
  409. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_main_menu.rb +19 -0
  410. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_on_demand.rb +16 -0
  411. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_product_page.rb +45 -0
  412. data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_search.rb +14 -0
  413. data/lib/User_Lib/screen/mobile/devices_mobile.rb +53 -0
  414. data/lib/User_Lib/screen/mobile/dvr_mobile.rb +5 -0
  415. data/lib/User_Lib/screen/mobile/favorites_mobile.rb +5 -0
  416. data/lib/User_Lib/screen/mobile/guide_mobile.rb +5 -0
  417. data/lib/User_Lib/screen/mobile/ios/ios_devices.rb +43 -0
  418. data/lib/User_Lib/screen/mobile/ios/ios_dvr.rb +231 -0
  419. data/lib/User_Lib/screen/mobile/ios/ios_favorites.rb +79 -0
  420. data/lib/User_Lib/screen/mobile/ios/ios_guide.rb +53 -0
  421. data/lib/User_Lib/screen/mobile/ios/ios_live_tv.rb +413 -0
  422. data/lib/User_Lib/screen/mobile/ios/ios_login.rb +76 -0
  423. data/lib/User_Lib/screen/mobile/ios/ios_main_menu.rb +38 -0
  424. data/lib/User_Lib/screen/mobile/ios/ios_on_demand.rb +371 -0
  425. data/lib/User_Lib/screen/mobile/ios/ios_parental_controls.rb +104 -0
  426. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_dvr.rb +14 -0
  427. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_live_tv.rb +36 -0
  428. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_main_menu.rb +7 -0
  429. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_on_demand.rb +7 -0
  430. data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_search.rb +13 -0
  431. data/lib/User_Lib/screen/mobile/ios/ios_privacy_legal.rb +56 -0
  432. data/lib/User_Lib/screen/mobile/ios/ios_product_page.rb +441 -0
  433. data/lib/User_Lib/screen/mobile/ios/ios_screen.rb +60 -0
  434. data/lib/User_Lib/screen/mobile/ios/ios_search.rb +145 -0
  435. data/lib/User_Lib/screen/mobile/ios/ios_settings.rb +34 -0
  436. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_live_tv.rb +34 -0
  437. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_main_menu.rb +7 -0
  438. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_on_demand.rb +7 -0
  439. data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_search.rb +13 -0
  440. data/lib/User_Lib/screen/mobile/live_tv_mobile.rb +73 -0
  441. data/lib/User_Lib/screen/mobile/login_mobile.rb +5 -0
  442. data/lib/User_Lib/screen/mobile/main_menu_mobile.rb +83 -0
  443. data/lib/User_Lib/screen/mobile/mobile_screen.rb +232 -0
  444. data/lib/User_Lib/screen/mobile/on_demand_mobile.rb +70 -0
  445. data/lib/User_Lib/screen/mobile/parental_controls_mobile.rb +5 -0
  446. data/lib/User_Lib/screen/mobile/privacy_legal_mobile.rb +5 -0
  447. data/lib/User_Lib/screen/mobile/product_page_mobile.rb +5 -0
  448. data/lib/User_Lib/screen/mobile/search_mobile.rb +5 -0
  449. data/lib/User_Lib/screen/mobile/settings_mobile.rb +33 -0
  450. data/lib/User_Lib/screen/passport/passport_dvr.rb +25 -0
  451. data/lib/User_Lib/screen/passport/passport_guide.rb +37 -0
  452. data/lib/User_Lib/screen/passport/passport_library.rb +25 -0
  453. data/lib/User_Lib/screen/passport/passport_live_tv.rb +17 -0
  454. data/lib/User_Lib/screen/passport/passport_main_menu.rb +25 -0
  455. data/lib/User_Lib/screen/passport/passport_mini_guide.rb +25 -0
  456. data/lib/User_Lib/screen/passport/passport_movies.rb +25 -0
  457. data/lib/User_Lib/screen/passport/passport_on_demand.rb +25 -0
  458. data/lib/User_Lib/screen/passport/passport_parental_controls.rb +25 -0
  459. data/lib/User_Lib/screen/passport/passport_product_page.rb +25 -0
  460. data/lib/User_Lib/screen/passport/passport_screen.rb +23 -0
  461. data/lib/User_Lib/screen/passport/passport_search.rb +25 -0
  462. data/lib/User_Lib/screen/passport/passport_settings.rb +25 -0
  463. data/lib/User_Lib/screen/passport/passport_tv_shows.rb +25 -0
  464. data/lib/User_Lib/screen/passport/passport_video_store.rb +25 -0
  465. data/lib/User_Lib/screen/roku/brs/roku_guide_brs.rb +12 -0
  466. data/lib/User_Lib/screen/roku/brs/roku_home_brs.rb +12 -0
  467. data/lib/User_Lib/screen/roku/brs/roku_live_tv_brs.rb +12 -0
  468. data/lib/User_Lib/screen/roku/brs/roku_login_brs.rb +103 -0
  469. data/lib/User_Lib/screen/roku/brs/roku_main_menu_brs.rb +46 -0
  470. data/lib/User_Lib/screen/roku/brs/roku_on_demand_brs.rb +12 -0
  471. data/lib/User_Lib/screen/roku/brs/roku_product_page_brs.rb +12 -0
  472. data/lib/User_Lib/screen/roku/brs/roku_screen_brs.rb +9 -0
  473. data/lib/User_Lib/screen/roku/brs/roku_search_brs.rb +12 -0
  474. data/lib/User_Lib/screen/roku/brs/roku_settings_brs.rb +42 -0
  475. data/lib/User_Lib/screen/roku/brs/roku_watch_later_brs.rb +12 -0
  476. data/lib/User_Lib/screen/roku/brs/roku_welcome_brs.rb +12 -0
  477. data/lib/User_Lib/screen/roku/roku_dvr.rb +7 -0
  478. data/lib/User_Lib/screen/roku/roku_guide.rb +590 -0
  479. data/lib/User_Lib/screen/roku/roku_home.rb +346 -0
  480. data/lib/User_Lib/screen/roku/roku_library.rb +26 -0
  481. data/lib/User_Lib/screen/roku/roku_live_tv.rb +210 -0
  482. data/lib/User_Lib/screen/roku/roku_login.rb +795 -0
  483. data/lib/User_Lib/screen/roku/roku_main_menu.rb +425 -0
  484. data/lib/User_Lib/screen/roku/roku_mini_guide.rb +7 -0
  485. data/lib/User_Lib/screen/roku/roku_on_demand.rb +479 -0
  486. data/lib/User_Lib/screen/roku/roku_product_page.rb +483 -0
  487. data/lib/User_Lib/screen/roku/roku_screen.rb +85 -0
  488. data/lib/User_Lib/screen/roku/roku_search.rb +229 -0
  489. data/lib/User_Lib/screen/roku/roku_settings.rb +304 -0
  490. data/lib/User_Lib/screen/roku/roku_watch_later.rb +51 -0
  491. data/lib/User_Lib/screen/roku/roku_welcome.rb +10 -0
  492. data/lib/User_Lib/screen/roku_tv/roku_tv_dvr.rb +14 -0
  493. data/lib/User_Lib/screen/roku_tv/roku_tv_guide.rb +14 -0
  494. data/lib/User_Lib/screen/roku_tv/roku_tv_home.rb +14 -0
  495. data/lib/User_Lib/screen/roku_tv/roku_tv_library.rb +14 -0
  496. data/lib/User_Lib/screen/roku_tv/roku_tv_live_tv.rb +14 -0
  497. data/lib/User_Lib/screen/roku_tv/roku_tv_login.rb +14 -0
  498. data/lib/User_Lib/screen/roku_tv/roku_tv_main_menu.rb +14 -0
  499. data/lib/User_Lib/screen/roku_tv/roku_tv_mini_guide.rb +14 -0
  500. data/lib/User_Lib/screen/roku_tv/roku_tv_on_demand.rb +26 -0
  501. data/lib/User_Lib/screen/roku_tv/roku_tv_product_page.rb +14 -0
  502. data/lib/User_Lib/screen/roku_tv/roku_tv_screen.rb +7 -0
  503. data/lib/User_Lib/screen/roku_tv/roku_tv_search.rb +14 -0
  504. data/lib/User_Lib/screen/roku_tv/roku_tv_settings.rb +14 -0
  505. data/lib/User_Lib/screen/roku_tv/roku_tv_watch_later.rb +14 -0
  506. data/lib/User_Lib/screen/roku_tv/roku_tv_welcome.rb +14 -0
  507. data/lib/User_Lib/screen/samsung_tv/samsung_tv_dvr.rb +24 -0
  508. data/lib/User_Lib/screen/samsung_tv/samsung_tv_guide.rb +24 -0
  509. data/lib/User_Lib/screen/samsung_tv/samsung_tv_library.rb +24 -0
  510. data/lib/User_Lib/screen/samsung_tv/samsung_tv_live_tv.rb +21 -0
  511. data/lib/User_Lib/screen/samsung_tv/samsung_tv_login.rb +13 -0
  512. data/lib/User_Lib/screen/samsung_tv/samsung_tv_main_menu.rb +64 -0
  513. data/lib/User_Lib/screen/samsung_tv/samsung_tv_mini_guide.rb +24 -0
  514. data/lib/User_Lib/screen/samsung_tv/samsung_tv_movies.rb +140 -0
  515. data/lib/User_Lib/screen/samsung_tv/samsung_tv_on_demand.rb +76 -0
  516. data/lib/User_Lib/screen/samsung_tv/samsung_tv_parental_controls.rb +24 -0
  517. data/lib/User_Lib/screen/samsung_tv/samsung_tv_product_page.rb +24 -0
  518. data/lib/User_Lib/screen/samsung_tv/samsung_tv_screen.rb +74 -0
  519. data/lib/User_Lib/screen/samsung_tv/samsung_tv_search.rb +29 -0
  520. data/lib/User_Lib/screen/samsung_tv/samsung_tv_settings.rb +189 -0
  521. data/lib/User_Lib/screen/samsung_tv/samsung_tv_tv_shows.rb +24 -0
  522. data/lib/User_Lib/screen/samsung_tv/samsung_tv_video_store.rb +24 -0
  523. data/lib/User_Lib/screen/sara/sara_dvr.rb +26 -0
  524. data/lib/User_Lib/screen/sara/sara_guide.rb +43 -0
  525. data/lib/User_Lib/screen/sara/sara_library.rb +26 -0
  526. data/lib/User_Lib/screen/sara/sara_live_tv.rb +26 -0
  527. data/lib/User_Lib/screen/sara/sara_log_in.rb +26 -0
  528. data/lib/User_Lib/screen/sara/sara_main_menu.rb +26 -0
  529. data/lib/User_Lib/screen/sara/sara_mini_guide.rb +26 -0
  530. data/lib/User_Lib/screen/sara/sara_movies.rb +26 -0
  531. data/lib/User_Lib/screen/sara/sara_on_demand.rb +26 -0
  532. data/lib/User_Lib/screen/sara/sara_parental_controls.rb +26 -0
  533. data/lib/User_Lib/screen/sara/sara_product_page.rb +26 -0
  534. data/lib/User_Lib/screen/sara/sara_screen.rb +24 -0
  535. data/lib/User_Lib/screen/sara/sara_search.rb +26 -0
  536. data/lib/User_Lib/screen/sara/sara_settings.rb +26 -0
  537. data/lib/User_Lib/screen/sara/sara_tv_shows.rb +26 -0
  538. data/lib/User_Lib/screen/sara/sara_video_store.rb +26 -0
  539. data/lib/User_Lib/screen/stb/iguide/iguide_devices.rb +10 -0
  540. data/lib/User_Lib/screen/stb/iguide/iguide_dvr.rb +10 -0
  541. data/lib/User_Lib/screen/stb/iguide/iguide_favorites.rb +10 -0
  542. data/lib/User_Lib/screen/stb/iguide/iguide_guide.rb +39 -0
  543. data/lib/User_Lib/screen/stb/iguide/iguide_home.rb +10 -0
  544. data/lib/User_Lib/screen/stb/iguide/iguide_library.rb +10 -0
  545. data/lib/User_Lib/screen/stb/iguide/iguide_live_tv.rb +59 -0
  546. data/lib/User_Lib/screen/stb/iguide/iguide_login.rb +10 -0
  547. data/lib/User_Lib/screen/stb/iguide/iguide_main_menu.rb +10 -0
  548. data/lib/User_Lib/screen/stb/iguide/iguide_mini_guide.rb +10 -0
  549. data/lib/User_Lib/screen/stb/iguide/iguide_movies.rb +10 -0
  550. data/lib/User_Lib/screen/stb/iguide/iguide_on_demand.rb +531 -0
  551. data/lib/User_Lib/screen/stb/iguide/iguide_parental_controls.rb +10 -0
  552. data/lib/User_Lib/screen/stb/iguide/iguide_privacy_legal.rb +10 -0
  553. data/lib/User_Lib/screen/stb/iguide/iguide_product_page.rb +10 -0
  554. data/lib/User_Lib/screen/stb/iguide/iguide_quick_menu.rb +7 -0
  555. data/lib/User_Lib/screen/stb/iguide/iguide_screen.rb +21 -0
  556. data/lib/User_Lib/screen/stb/iguide/iguide_search.rb +10 -0
  557. data/lib/User_Lib/screen/stb/iguide/iguide_settings.rb +10 -0
  558. data/lib/User_Lib/screen/stb/iguide/iguide_tv_shows.rb +10 -0
  559. data/lib/User_Lib/screen/stb/iguide/iguide_video_store.rb +10 -0
  560. data/lib/User_Lib/screen/stb/login_stb.rb +5 -0
  561. data/lib/User_Lib/screen/stb/odn/odn_dvr.rb +59 -0
  562. data/lib/User_Lib/screen/stb/odn/odn_favorites.rb +8 -0
  563. data/lib/User_Lib/screen/stb/odn/odn_guide.rb +177 -0
  564. data/lib/User_Lib/screen/stb/odn/odn_live_tv.rb +115 -0
  565. data/lib/User_Lib/screen/stb/odn/odn_login.rb +8 -0
  566. data/lib/User_Lib/screen/stb/odn/odn_main_menu.rb +175 -0
  567. data/lib/User_Lib/screen/stb/odn/odn_on_demand.rb +1170 -0
  568. data/lib/User_Lib/screen/stb/odn/odn_on_demand_kids.rb +23 -0
  569. data/lib/User_Lib/screen/stb/odn/odn_on_demand_left_menu.rb +180 -0
  570. data/lib/User_Lib/screen/stb/odn/odn_parental_controls.rb +9 -0
  571. data/lib/User_Lib/screen/stb/odn/odn_product_page.rb +8 -0
  572. data/lib/User_Lib/screen/stb/odn/odn_screen.rb +111 -0
  573. data/lib/User_Lib/screen/stb/odn/odn_search.rb +167 -0
  574. data/lib/User_Lib/screen/stb/odn/odn_settings.rb +142 -0
  575. data/lib/User_Lib/screen/stb/spectrum/spectrum_diagnostics.rb +27 -0
  576. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/screen_spectrum_docsis.rb +12 -0
  577. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_guide.rb +10 -0
  578. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_main_menu.rb +10 -0
  579. data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_settings.rb +10 -0
  580. data/lib/User_Lib/screen/stb/spectrum/spectrum_dvr.rb +1781 -0
  581. data/lib/User_Lib/screen/stb/spectrum/spectrum_guide.rb +841 -0
  582. data/lib/User_Lib/screen/stb/spectrum/spectrum_library.rb +384 -0
  583. data/lib/User_Lib/screen/stb/spectrum/spectrum_live_tv.rb +259 -0
  584. data/lib/User_Lib/screen/stb/spectrum/spectrum_main_menu.rb +223 -0
  585. data/lib/User_Lib/screen/stb/spectrum/spectrum_mini_guide.rb +404 -0
  586. data/lib/User_Lib/screen/stb/spectrum/spectrum_movies.rb +420 -0
  587. data/lib/User_Lib/screen/stb/spectrum/spectrum_netflix.rb +37 -0
  588. data/lib/User_Lib/screen/stb/spectrum/spectrum_on_demand.rb +2137 -0
  589. data/lib/User_Lib/screen/stb/spectrum/spectrum_parental_controls.rb +528 -0
  590. data/lib/User_Lib/screen/stb/spectrum/spectrum_pay_per_view.rb +26 -0
  591. data/lib/User_Lib/screen/stb/spectrum/spectrum_product_page.rb +58 -0
  592. data/lib/User_Lib/screen/stb/spectrum/spectrum_screen.rb +48 -0
  593. data/lib/User_Lib/screen/stb/spectrum/spectrum_search.rb +92 -0
  594. data/lib/User_Lib/screen/stb/spectrum/spectrum_settings.rb +1657 -0
  595. data/lib/User_Lib/screen/stb/spectrum/spectrum_tv_shows.rb +1532 -0
  596. data/lib/User_Lib/screen/stb/spectrum/spectrum_video_store.rb +1598 -0
  597. data/lib/User_Lib/screen/stb/stb_screen.rb +7 -0
  598. data/lib/User_Lib/screen/tivo/tivo_dvr.rb +25 -0
  599. data/lib/User_Lib/screen/tivo/tivo_guide.rb +25 -0
  600. data/lib/User_Lib/screen/tivo/tivo_library.rb +25 -0
  601. data/lib/User_Lib/screen/tivo/tivo_live_tv.rb +17 -0
  602. data/lib/User_Lib/screen/tivo/tivo_login.rb +25 -0
  603. data/lib/User_Lib/screen/tivo/tivo_main_menu.rb +25 -0
  604. data/lib/User_Lib/screen/tivo/tivo_mini_guide.rb +25 -0
  605. data/lib/User_Lib/screen/tivo/tivo_movies.rb +25 -0
  606. data/lib/User_Lib/screen/tivo/tivo_on_demand.rb +25 -0
  607. data/lib/User_Lib/screen/tivo/tivo_parental_controls.rb +25 -0
  608. data/lib/User_Lib/screen/tivo/tivo_product_page.rb +25 -0
  609. data/lib/User_Lib/screen/tivo/tivo_screen.rb +20 -0
  610. data/lib/User_Lib/screen/tivo/tivo_search.rb +31 -0
  611. data/lib/User_Lib/screen/tivo/tivo_settings.rb +25 -0
  612. data/lib/User_Lib/screen/tivo/tivo_tv_shows.rb +25 -0
  613. data/lib/User_Lib/screen/tivo/tivo_video_store.rb +25 -0
  614. data/lib/config/ConfigParams.xml +96 -0
  615. data/lib/config/ImageROI.xml +45 -0
  616. data/lib/config/ROI.xml +150 -0
  617. data/lib/config/Userlog4j.xml +62 -0
  618. data/lib/config/schema-docs/mode.xsd +12 -0
  619. data/lib/config/schema-docs/processTestJobs.xsd +63 -0
  620. data/lib/config/schema-docs/rackip.xsd +24 -0
  621. data/lib/copy_ref_images.rb +199 -0
  622. data/lib/copy_repo.rb +136 -0
  623. data/lib/diagnostics/conductor/conductor_checkup.tmc +24 -0
  624. data/lib/diagnostics/db/mad_db_check.tmc +56 -0
  625. data/lib/diagnostics/db/mas_db_checkup.tmc +24 -0
  626. data/lib/diagnostics/db/mas_db_checkup_gem.tmc +20 -0
  627. data/lib/diagnostics/db/mas_db_checkup_jar.tmc +50 -0
  628. data/lib/diagnostics/iguide/iguide_nvram_reset.tmc +23 -0
  629. data/lib/diagnostics/iguide/iguide_prepare_stb.tmc +33 -0
  630. data/lib/diagnostics/iguide/iguide_prepare_stb_and_health_check.tmc +63 -0
  631. data/lib/diagnostics/iguide/iguide_stb_health_check.tmc +54 -0
  632. data/lib/diagnostics/prepare_stb.tmc +30 -0
  633. data/lib/diagnostics/prepare_stb_and_health_check.tmc +56 -0
  634. data/lib/diagnostics/script_options/options_checkup.tmc +145 -0
  635. data/lib/diagnostics/server_components_check.tmc +62 -0
  636. data/lib/diagnostics/ssh/dncs_checkup.tmc +24 -0
  637. data/lib/diagnostics/ssh/mas_checkup.tmc +24 -0
  638. data/lib/diagnostics/stb_health_check.tmc +46 -0
  639. data/lib/diagnostics/stb_ip_check.tmc +120 -0
  640. data/lib/diagnostics/webservices/mas_rest_services_checkup.tmc +24 -0
  641. data/lib/diagnostics/webservices/mas_soap_services_checkup.tmc +24 -0
  642. data/lib/dsllib/common/dncs/dncs_utils.rb +449 -0
  643. data/lib/dsllib/common/mas_db/mas_conductor.rb +1328 -0
  644. data/lib/dsllib/common/mas_db/mas_db.rb +154 -0
  645. data/lib/dsllib/common/mas_db/mas_publish.rb +2349 -0
  646. data/lib/dsllib/common/mas_db/mas_rest_services.rb +75 -0
  647. data/lib/dsllib/common/mas_db/mas_soap_services.rb +540 -0
  648. data/lib/dsllib/common/mas_db/mas_utils.rb +422 -0
  649. data/lib/dsllib/common/remote_diagnostics/mdn_remote_diagnostics.rb +1335 -0
  650. data/lib/dsllib/common/remote_diagnostics/odn_web_server.rb +269 -0
  651. data/lib/dsllib/common/utils/excel_export.rb +273 -0
  652. data/lib/dsllib/common/utils/excel_module.rb +890 -0
  653. data/lib/dsllib/common/utils/server_components_utils.rb +130 -0
  654. data/lib/dsllib/common/utils/stb_health_check_utils.rb +92 -0
  655. data/lib/dsllib/common/utils/sword_utils.rb +393 -0
  656. data/lib/dsllib/common/utils/tmc_utils.rb +2944 -0
  657. data/lib/dsllib/common/utils/virtual_keyboard_navigator.rb +208 -0
  658. data/lib/dsllib/common/utils/virtual_keyboard_vp_navigator.rb +195 -0
  659. data/lib/dsllib/performance/DTA/roi.rb +214 -0
  660. data/lib/dsllib/performance/DTA/utils.rb +96 -0
  661. data/lib/dsllib/performance/iguide_concurrent_test/ROI.rb +236 -0
  662. data/lib/dsllib/performance/iguide_concurrent_test/utils.rb +533 -0
  663. data/lib/dsllib/performance/measure_tune.rb +438 -0
  664. data/lib/dsllib/performance/perf_lib.rb +660 -0
  665. data/lib/end_iteration.rb +4 -0
  666. data/lib/lib/data_services/channel.rb +39 -0
  667. data/lib/lib/data_services/data_services.rb +14 -0
  668. data/lib/lib/data_services/guide.rb +104 -0
  669. data/lib/lib/data_services/lineup.rb +114 -0
  670. data/lib/lib/data_services/program.rb +48 -0
  671. data/lib/lib/data_services/schedule.rb +18 -0
  672. data/lib/lib/data_services/splunk_connector.rb +135 -0
  673. data/lib/lib/data_services/splunk_data_reader.rb +77 -0
  674. data/lib/lib/element/element.rb +79 -0
  675. data/lib/lib/extensions/array_extensions.rb +32 -0
  676. data/lib/lib/extensions/datetime_extensions.rb +8 -0
  677. data/lib/lib/extensions/extensions.rb +51 -0
  678. data/lib/lib/extensions/file_extensions.rb +32 -0
  679. data/lib/lib/extensions/float_extensions.rb +32 -0
  680. data/lib/lib/extensions/integer_extensions.rb +39 -0
  681. data/lib/lib/extensions/nethttp_extensions.rb +11 -0
  682. data/lib/lib/extensions/object_extensions.rb +7 -0
  683. data/lib/lib/extensions/string_extensions.rb +35 -0
  684. data/lib/lib/helpers/tmc_helpers/csv_helper/csv_helper.rb +85 -0
  685. data/lib/lib/helpers/tmc_helpers/email_helper/email_helper.rb +71 -0
  686. data/lib/lib/helpers/tmc_helpers/http_helper/http_helper.rb +133 -0
  687. data/lib/lib/helpers/tmc_helpers/roi_helper/roi_helper.rb +17 -0
  688. data/lib/lib/helpers/tmc_helpers/snmp_helper/snmp_helper.rb +71 -0
  689. data/lib/lib/helpers/tmc_helpers/ssh_helper/ssh_helper.rb +337 -0
  690. data/lib/lib/helpers/tmc_helpers/tmc_helpers.rb +1260 -0
  691. data/lib/lib/keyboard/apple_tv/apple_tv_password_keyboard.rb +102 -0
  692. data/lib/lib/keyboard/apple_tv/apple_tv_search_keyboard.rb +103 -0
  693. data/lib/lib/keyboard/apple_tv/apple_tv_username_keyboard.rb +105 -0
  694. data/lib/lib/keyboard/keyboard.rb +504 -0
  695. data/lib/lib/keyboard/keyboard_layout.rb +51 -0
  696. data/lib/lib/keyboard/roku/roku_reset_pin_keyboard.rb +12 -0
  697. data/lib/lib/keyboard/roku/roku_rsg_search_keyboard.rb +67 -0
  698. data/lib/lib/keyboard/roku/roku_rsg_signin_keyboard.rb +106 -0
  699. data/lib/lib/keyboard/roku/roku_search_keyboard.rb +10 -0
  700. data/lib/lib/keyboard/roku/roku_signin_keyboard.rb +42 -0
  701. data/lib/lib/keyboard/samsung_tv/samsung_tv_search_keyboard.rb +50 -0
  702. data/lib/lib/keyboard/samsung_tv/samsung_tv_signin_keyboard.rb +52 -0
  703. data/lib/lib/keyboard/stb/odn/odn_on_demand_search_keyboard.rb +10 -0
  704. data/lib/lib/keyboard/stb/odn/odn_search_keyboard.rb +10 -0
  705. data/lib/lib/keyboard/stb/spectrum/spectrum_netflix_email_keyboard.rb +50 -0
  706. data/lib/lib/keyboard/stb/spectrum/spectrum_netflix_keyboard.rb +43 -0
  707. data/lib/lib/keyboard/stb/spectrum/spectrum_netflix_name_keyboard.rb +16 -0
  708. data/lib/lib/keyboard/stb/spectrum/spectrum_search_keyboard.rb +32 -0
  709. data/lib/lib/keyboard/tivo/tivo_password_keyboard.rb +0 -0
  710. data/lib/lib/keyboard/tivo/tivo_search_keyboard.rb +0 -0
  711. data/lib/lib/keyboard/tivo/tivo_username_keyboard.rb +0 -0
  712. data/lib/lib/keys/apple_tv/apple_tv_keys.rb +26 -0
  713. data/lib/lib/keys/base_keys.rb +14 -0
  714. data/lib/lib/keys/dta/dta_keys.rb +60 -0
  715. data/lib/lib/keys/mdn/mdn_keys.rb +60 -0
  716. data/lib/lib/keys/passport/passport_keys.rb +59 -0
  717. data/lib/lib/keys/roku/roku_keys.rb +31 -0
  718. data/lib/lib/keys/roku_tv/roku_tv_keys.rb +32 -0
  719. data/lib/lib/keys/samsung_tv/samsung_tv_keys.rb +58 -0
  720. data/lib/lib/keys/sara/sara_keys.rb +60 -0
  721. data/lib/lib/keys/stb/iguide/iguide_keys.rb +56 -0
  722. data/lib/lib/keys/stb/odn/odn_keys.rb +63 -0
  723. data/lib/lib/keys/stb/spectrum/spectrum_keys.rb +59 -0
  724. data/lib/lib/keys/stb/stb_keys.rb +13 -0
  725. data/lib/lib/keys/tivo/tivo_keys.rb +26 -0
  726. data/lib/lib/logger/multi_io.rb +14 -0
  727. data/lib/lib/logger/tmc_dut_logger.rb +251 -0
  728. data/lib/lib/logger/tmc_logger.rb +30 -0
  729. data/lib/lib/mixins/assignable.rb +19 -0
  730. data/lib/lib/mixins/can_have_special_methods.rb +50 -0
  731. data/lib/lib/mixins/enumish.rb +16 -0
  732. data/lib/lib/new_platform.rb +302 -0
  733. data/lib/lib/new_sub_platform.rb +90 -0
  734. data/lib/lib/platform/apple_tv/apple_tv.rb +33 -0
  735. data/lib/lib/platform/apple_tv/apple_tv_1080/apple_tv_1080.rb +54 -0
  736. data/lib/lib/platform/apple_tv/apple_tv_720/apple_tv_720.rb +14 -0
  737. data/lib/lib/platform/dta/dta.rb +35 -0
  738. data/lib/lib/platform/dta/dta_1080/dta_1080.rb +15 -0
  739. data/lib/lib/platform/dta/dta_720/dta_720.rb +15 -0
  740. data/lib/lib/platform/mdn/mdn.rb +35 -0
  741. data/lib/lib/platform/mdn/mdn_1080/mdn_1080.rb +15 -0
  742. data/lib/lib/platform/mdn/mdn_720/mdn_720.rb +15 -0
  743. data/lib/lib/platform/mobile/android/android.rb +23 -0
  744. data/lib/lib/platform/mobile/android/android_phone/android_phone.rb +23 -0
  745. data/lib/lib/platform/mobile/android/android_tablet/android_tablet.rb +23 -0
  746. data/lib/lib/platform/mobile/ios/ios.rb +23 -0
  747. data/lib/lib/platform/mobile/ios/ios_phone/ios_phone.rb +23 -0
  748. data/lib/lib/platform/mobile/ios/ios_tablet/ios_tablet.rb +23 -0
  749. data/lib/lib/platform/mobile/mobile.rb +102 -0
  750. data/lib/lib/platform/passport/passport.rb +41 -0
  751. data/lib/lib/platform/passport/passport1080/passport_1080.rb +15 -0
  752. data/lib/lib/platform/passport/passport_720/passport_720.rb +14 -0
  753. data/lib/lib/platform/platform.rb +884 -0
  754. data/lib/lib/platform/roku/roku.rb +96 -0
  755. data/lib/lib/platform/roku/roku_720/roku_720.rb +16 -0
  756. data/lib/lib/platform/roku_tv/roku_tv.rb +33 -0
  757. data/lib/lib/platform/roku_tv/roku_tv_1080/roku_tv_1080.rb +14 -0
  758. data/lib/lib/platform/roku_tv/roku_tv_720/roku_tv_720.rb +14 -0
  759. data/lib/lib/platform/samsung_tv/samsung_tv.rb +31 -0
  760. data/lib/lib/platform/samsung_tv/samsung_tv_1080/samsung_tv_1080.rb +14 -0
  761. data/lib/lib/platform/samsung_tv/samsung_tv_720/samsung_tv_720.rb +14 -0
  762. data/lib/lib/platform/sara/sara.rb +42 -0
  763. data/lib/lib/platform/sara/sara_1080/sara_1080.rb +15 -0
  764. data/lib/lib/platform/sara/sara_720/sara_720.rb +15 -0
  765. data/lib/lib/platform/stb/iguide/iguide.rb +18 -0
  766. data/lib/lib/platform/stb/iguide/iguide_1080/iguide_1080.rb +14 -0
  767. data/lib/lib/platform/stb/iguide/iguide_720/iguide_720.rb +14 -0
  768. data/lib/lib/platform/stb/odn/odn.rb +480 -0
  769. data/lib/lib/platform/stb/odn/odn_1080/odn_1080.rb +14 -0
  770. data/lib/lib/platform/stb/odn/odn_720/odn_720.rb +14 -0
  771. data/lib/lib/platform/stb/odn/odn_720/odn_720_moto/odn_720_moto.rb +14 -0
  772. data/lib/lib/platform/stb/odn/odn_720/odn_720_sa/odn_720_sa.rb +14 -0
  773. data/lib/lib/platform/stb/odn/odn_720/odn_720_samsung/odn_720_samsung.rb +14 -0
  774. data/lib/lib/platform/stb/spectrum/spectrum.rb +48 -0
  775. data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080.rb +14 -0
  776. data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis.rb +16 -0
  777. data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris.rb +15 -0
  778. data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax.rb +15 -0
  779. data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch.rb +15 -0
  780. data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace.rb +14 -0
  781. data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720.rb +14 -0
  782. data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris.rb +15 -0
  783. data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax.rb +15 -0
  784. data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch.rb +15 -0
  785. data/lib/lib/platform/stb/stb.rb +93 -0
  786. data/lib/lib/platform/template.txt +16 -0
  787. data/lib/lib/platform/tivo/tivo.rb +28 -0
  788. data/lib/lib/platform/tivo/tivo_1080/tivo_1080.rb +15 -0
  789. data/lib/lib/platform/tivo/tivo_720/tivo_720.rb +14 -0
  790. data/lib/lib/platform/web/web.rb +51 -0
  791. data/lib/lib/platform_libs/roku/roku_controller.rb +254 -0
  792. data/lib/lib/prereqs/prereqs.rb +17 -0
  793. data/lib/lib/prereqs/prereqs_for_dut.rb +14 -0
  794. data/lib/lib/prereqs/prereqs_for_test.rb +14 -0
  795. data/lib/lib/remotes/remotes.rb +8 -0
  796. data/lib/lib/remotes/stb/spectrum/spectrum_remotes.rb +22 -0
  797. data/lib/lib/roi/black/black_roi.rb +125 -0
  798. data/lib/lib/roi/color/color_roi.rb +138 -0
  799. data/lib/lib/roi/image/image_roi.rb +187 -0
  800. data/lib/lib/roi/roi.rb +1064 -0
  801. data/lib/lib/roi/template_roi.txt +9 -0
  802. data/lib/lib/roi/text/text_roi.rb +187 -0
  803. data/lib/lib/roi/video/video_roi.rb +98 -0
  804. data/lib/lib/screen/screen.rb +183 -0
  805. data/lib/lib/screen/template.txt +7 -0
  806. data/lib/lib/screen/template_screen.txt +10 -0
  807. data/lib/lib/screens/apple_tv/apple_tv_screens.rb +44 -0
  808. data/lib/lib/screens/dta/dta_screens.rb +49 -0
  809. data/lib/lib/screens/mdn/mdn_screens.rb +49 -0
  810. data/lib/lib/screens/mobile/android/android_phone/android_phone_screens.rb +28 -0
  811. data/lib/lib/screens/mobile/android/android_screens.rb +40 -0
  812. data/lib/lib/screens/mobile/android/android_tablet/android_tablet_screens.rb +29 -0
  813. data/lib/lib/screens/mobile/ios/ios_phone/ios_phone_screens.rb +22 -0
  814. data/lib/lib/screens/mobile/ios/ios_screens.rb +39 -0
  815. data/lib/lib/screens/mobile/ios/ios_tablet/ios_tablet_screens.rb +20 -0
  816. data/lib/lib/screens/mobile/mobile_screens.rb +18 -0
  817. data/lib/lib/screens/passport/passport_screens.rb +42 -0
  818. data/lib/lib/screens/roku/roku_screens.rb +72 -0
  819. data/lib/lib/screens/roku_tv/roku_tv_screens.rb +43 -0
  820. data/lib/lib/screens/samsung_tv/samsung_tv_screens.rb +44 -0
  821. data/lib/lib/screens/sara/sara_screens.rb +49 -0
  822. data/lib/lib/screens/screens.rb +23 -0
  823. data/lib/lib/screens/stb/iguide/iguide_1080/iguide_1080_screens.rb +56 -0
  824. data/lib/lib/screens/stb/iguide/iguide_720/iguide_720_screens.rb +56 -0
  825. data/lib/lib/screens/stb/iguide/iguide_screens.rb +54 -0
  826. data/lib/lib/screens/stb/odn/odn_screens.rb +40 -0
  827. data/lib/lib/screens/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_screens.rb +18 -0
  828. data/lib/lib/screens/stb/spectrum/spectrum_screens.rb +48 -0
  829. data/lib/lib/screens/stb/stb_screens.rb +13 -0
  830. data/lib/lib/screens/template.txt +52 -0
  831. data/lib/lib/screens/tivo/tivo_screens.rb +44 -0
  832. data/lib/lib/selenium/appium/appium.rb +388 -0
  833. data/lib/lib/selenium/selenium.rb +466 -0
  834. data/lib/lib/selenium/webdriver/webdriver.rb +254 -0
  835. data/lib/lib/test_case/boilerplate/functional.rb +7 -0
  836. data/lib/lib/test_case/boilerplate/performance.rb +7 -0
  837. data/lib/lib/test_case/ci_test.rb +47 -0
  838. data/lib/lib/test_case/functional_test_case.rb +27 -0
  839. data/lib/lib/test_case/make_boilerplate.rb +32 -0
  840. data/lib/lib/test_case/monitoring/apple_monitor.rb +104 -0
  841. data/lib/lib/test_case/monitoring/base_monitor.rb +140 -0
  842. data/lib/lib/test_case/monitoring/dta_monitor.rb +53 -0
  843. data/lib/lib/test_case/monitoring/iguide_monitor.rb +72 -0
  844. data/lib/lib/test_case/monitoring/mdn_monitor.rb +28 -0
  845. data/lib/lib/test_case/monitoring/monitoring_test.rb +111 -0
  846. data/lib/lib/test_case/monitoring/odn_monitor.rb +137 -0
  847. data/lib/lib/test_case/monitoring/passport_monitor.rb +50 -0
  848. data/lib/lib/test_case/monitoring/report_monitor.rb +178 -0
  849. data/lib/lib/test_case/monitoring/roku_monitor.rb +102 -0
  850. data/lib/lib/test_case/monitoring/sara_monitor.rb +33 -0
  851. data/lib/lib/test_case/monitoring/spec_monitor.rb +154 -0
  852. data/lib/lib/test_case/performance_test_case.rb +29 -0
  853. data/lib/lib/test_case/test_case.rb +1055 -0
  854. data/lib/lib/test_case/test_error.rb +29 -0
  855. data/lib/lib/test_case/test_exception.rb +9 -0
  856. data/lib/lib/test_case/test_status.rb +39 -0
  857. data/lib/lib/test_case/test_step.rb +156 -0
  858. data/lib/lib/test_case/test_trace.rb +80 -0
  859. data/lib/lib/test_data.rb +222 -0
  860. data/lib/lib/test_wrapper.rb +146 -0
  861. data/lib/misc/get_latest_android.sh +14 -0
  862. data/lib/misc/get_latest_ios.sh +14 -0
  863. data/lib/package-lock.json +3 -0
  864. data/lib/run_test.rb +4 -0
  865. data/lib/script_validator.rb +48 -0
  866. data/lib/syntax_eval.rb +151 -0
  867. data/lib/tools/convert_old_scripts.rb +100 -0
  868. data/lib/tools/find_duplicate_rois.rb +27 -0
  869. data/lib/tools/roku/inspector.rb +130 -0
  870. data/lib/tools/syntax_checker.rb +83 -0
  871. data/lib/upload_ref_images.rb +255 -0
  872. metadata +912 -0
@@ -0,0 +1,438 @@
1
+ require './dsllib/common/utils/tmc_utils'
2
+ require './dsllib/performance/perf_lib'
3
+
4
+ def measure_tune(from_channel_type, to_channel_type, from_channel, to_channel, tune_type='direct', cache_clear=false)
5
+ if (from_channel_type == to_channel_type and to_channel_type == 'mod')
6
+ measure_tune_guide_mod_mod(from_channel_type, to_channel_type, from_channel, to_channel, tune_type='direct')
7
+ return
8
+ end
9
+ screen_area = stb_img_roi(:all_screen_but_info_banner)
10
+ debug_log = false
11
+ if from_channel_type == 'analog' or to_channel_type == 'analog'
12
+ tcunsupported "Box['#{fetch_stb_model}'] not supported." unless stb_capable_of? 'ANALOG'
13
+ end
14
+ tcfail "From and to channels cannot be the same" if (from_channel == to_channel)
15
+ tcfail "Failed to soft power STB" unless power_on_stb?
16
+ log Elog::ELogLevel::INFO2, "#{tune_type} tune from channel: #{from_channel} to channel: #{to_channel}"
17
+ #Verify video on from_channel
18
+ if(cache_clear)
19
+ start_clear_chan=(@test_case.options[:clear_tuner_cache_start_channel]==nil)? 516 : @test_case.options[:clear_tuner_cache_start_channel]
20
+ tcfail "Could not clear tuner cache" unless clear_tuner_caches?(start_clear_chan, 6)
21
+ end
22
+ tcfail "Could not get video on from_channel: #{from_channel}" if initialize_execution(from_channel) == false
23
+ tcfail "Tuned to wrong from channel: #{from_channel}" if(!perf_verify_channel_tune? from_channel)
24
+
25
+ press_exit_sleep
26
+ if(tune_type=='guide')
27
+ sleep 10.sec
28
+ press_guide_sleep
29
+ perf_tune_to_channel(to_channel)
30
+ sleep 4.sec
31
+ loginfo3 "Screen before pressing select",true,false,"guide"
32
+ press_select 0
33
+ else
34
+ perf_tune_to_channel(to_channel)
35
+ loginfo3 "Screen before channel starts changing",true,false,"guide"
36
+ end
37
+ startTime = Time.now
38
+ #tcfail "Video did not pause after #{tune_type} tuning to channel: #{to_channel}" if (wait_till_video_freezes_playing(5000,80,2) == 0)
39
+ tcfail "Video did not go black after #{tune_type} tuning to channel: #{to_channel}" if (wait_till_roi_is_black(screen_area, 5000,0,2) == 0)
40
+
41
+ stopTime = Time.now
42
+ tuneTime = time_diff_milli(startTime, stopTime)
43
+ log Elog::ELogLevel::INFO2, "Video froze after: #{tuneTime.to_s}"
44
+ #tcfail "Video not playing after #{tune_type} tuning to channel: #{to_channel}" if (wait_till_video_is_playing(15000,0,2) == 0)
45
+ tcfail "Video not playing after #{tune_type} tuning to channel: #{to_channel}" if (wait_till_roi_is_not_black(screen_area, 15000,0,2) == 0)
46
+ stopTime = Time.now
47
+ tuneTime = time_diff_milli(startTime, stopTime)
48
+ tcfail "Test took too long" if (tuneTime > 15000)
49
+ log Elog::ELogLevel::INFO2, "Long tune time" if (tuneTime > 5000)
50
+ press_exit_sleep
51
+ tcfail "Could not verify to channel: #{to_channel}: for #{tune_type} tune" unless perf_verify_channel_tune? to_channel
52
+ post_result(startTime.to_f, stopTime.to_f)
53
+ log Elog::ELogLevel::DURATION,from_channel_type + " to " + to_channel_type + " " + tune_type + " tune|" + tuneTime.to_s
54
+ end
55
+
56
+ def measure_tune_guide_mod_mod(from_channel_type, to_channel_type, from_channel, to_channel, tune_type='direct')
57
+ debug_log = false
58
+ tcfail "From and to channels cannot be the same" if (from_channel == to_channel)
59
+ #screenROI_before = DSL::ImageRoi.new(56,13,192,129,75, "")
60
+ #screenROI_after = DSL::ImageRoi.new(56,13,192,129,75, "")
61
+ screenROI_before = stb_img_roi(:guide_info)
62
+ screenROI_after = stb_img_roi(:guide_info)
63
+
64
+ log Elog::ELogLevel::INFO2, "#{tune_type} tune from channel: #{from_channel} to channel: #{to_channel}"
65
+ #Verify video on from_channel
66
+ tcfail "Could not get video on from_channel: #{from_channel}" if initialize_execution(from_channel) == false
67
+ press_exit_sleep
68
+ tcfail "Tuned to wrong from channel: #{from_channel}" if(!perf_verify_channel_tune? from_channel)
69
+ if(tune_type=='guide')
70
+ press_guide_sleep
71
+ sleep 4.sec
72
+ perf_tune_to_channel(to_channel)
73
+ sleep 4.sec
74
+ filename = (capture_screen_to("tmp_stb_#{$stb_id}.jpg"))
75
+ screenROI_before.referenceImage = filename
76
+ loginfo3 "Screen before pressing select",true,false,"image"
77
+ press_select 0
78
+ else
79
+ sleep 2.sec
80
+ filename = (capture_screen_to("tmp_stb_#{$stb_id}.jpg"))
81
+ screenROI_before.referenceImage = filename
82
+ loginfo3 "Screen before pressing tuning to channel",true,false,"image"
83
+ perf_tune_to_channel(to_channel)
84
+ end
85
+ times = time_for_screen_change(screenROI_before, screenROI_after, 15, false)
86
+ dataValue = time_diff_milli(times[0], times[1])
87
+ tcfail "Failed to go to channel #{to_channel}" if(dataValue == 0)
88
+ dataValue = dataValue.to_s
89
+ post_result(times[0].to_f, times[1].to_f) if @test_case.send(:is_sword?)
90
+ log(Elog::ELogLevel::DURATION,from_channel_type + " to " + to_channel_type + " " + tune_type + " tune|" + dataValue)
91
+ press_exit_sleep
92
+ end
93
+
94
+ def measure_burst_tune(channels, burst_type)
95
+ debug_log = false
96
+ start_chan = channels[0]
97
+ final_chan = channels[1]
98
+
99
+ if(channels.length > 2)
100
+ channel_tunes = channels[2]
101
+ else
102
+ channel_tunes = "5"
103
+ end
104
+ start_chan_num = (Integer(start_chan) rescue nil)
105
+ final_chan_num = (Integer(final_chan) rescue nil)
106
+ channel_tunes = (Integer(channel_tunes) rescue nil)
107
+ chan_up = true
108
+ if start_chan_num != nil and final_chan_num != nil
109
+ chan_up = false if final_chan_num < start_chan_num
110
+ end
111
+ channel_tunes = 5 if channel_tunes == nil
112
+
113
+ guide_chan_ROI = lookup_ocr_roi(:guide_channel)
114
+ if guide_chan_ROI.class == Array
115
+ guide_chan_ROI.collect{|roi| roi.expectedText = final_chan.to_s}
116
+ else
117
+ guide_chan_ROI.expectedText = final_chan.to_s
118
+ end
119
+
120
+ #guide_chan_ROI = DSL::OcrRoi.new(98, 21, 117, 67, 6, "", final_chan.to_s)
121
+ log Elog::ELogLevel::INFO, "Initializing on channel:" + start_chan if(debug_log == true)
122
+ tcfail "Could not get initial video displayed on channel #{start_chan}" if(initialize_execution(start_chan) == false)
123
+
124
+ log Elog::ELogLevel::DEBUG, "Initial channel displayed" if(debug_log == true)
125
+
126
+ #start timer
127
+ startTime = Time.now
128
+ for k in 1..channel_tunes
129
+ if chan_up
130
+ press_channel_up(0.ms())
131
+ dir = 'up'
132
+ else
133
+ press_channel_down(0.ms())
134
+ dir = 'down'
135
+ end
136
+ if(k==1)
137
+ log Elog::ELogLevel::DEBUG, "Warning: Video did not pause" if (wait_till_video_freezes_playing(2000, 50, 2) == 0)
138
+ #tcfail "Video did not pause" if (wait_till_video_freezes_playing(1500, 100, 3) == 0)
139
+ end
140
+ sleep 500.ms
141
+ end
142
+ tcfail "Video not playing" if (wait_till_video_is_playing(15000, 100, 2, area='all_but_info_banner') == 0)
143
+
144
+ stopTime = Time.now
145
+
146
+ _logmessage Elog::ELogLevel::INFO, "Video playing", true, false
147
+ for i in 1..3
148
+ press_guide_sleep
149
+ break if text_on_screen_similar guide_chan_ROI, final_chan.to_s
150
+ tcfail "Could not verify final channel number" if i > 2
151
+ press_exit_sleep
152
+ end
153
+ dataValue = time_diff_milli(startTime, stopTime).to_s
154
+ log Elog::ELogLevel::DURATION,"Burst tune " + burst_type + "|" + dataValue
155
+ post_result(startTime.to_f, stopTime.to_f)
156
+ end
157
+
158
+ def measure_guide_tune(from_channel, to_channel)
159
+ #colorROI = DSL::ImageRoi.new(199,313,4,4,80, "")
160
+ #color = [0, 115, 154]
161
+ #textROI = DSL::OcrRoi.new(121,52,47,28, 6, "", "")
162
+
163
+ loginfo2 "Guide tune from channel #{from_channel} to #{to_channel}"
164
+ screenROI_before = stb_img_roi(:guide_network_logo)
165
+ screenROI_after = stb_img_roi(:guide_network_logo)
166
+ #screenROI_before = DSL::ImageRoi.new(0,25,73,39,70, "")
167
+ #screenROI_after = DSL::ImageRoi.new(0,25,73,39,70, "")
168
+ timeout=15
169
+ press_guide_sleep unless guide_banner_appears?
170
+ sleep 5.sec
171
+ unless guide_banner_appears?
172
+ #loginfo3 "Failed to go to guide",true,false,"image"
173
+ tcfail "Failed to go to guide"
174
+ end
175
+ perf_tune_to_channel(from_channel)
176
+ sleep 3.sec
177
+ filename = (capture_screen_to("tmp_stb_#{$stb_id}.jpg"))
178
+ screenROI_before.referenceImage = filename
179
+ sleep 5.sec
180
+ loginfo3 "Initial screen",true,false,"image"
181
+ perf_tune_to_channel(to_channel,0)
182
+ #times = time_to_display_text(textROI, to_channel, 15)
183
+ times = time_for_screen_change(screenROI_before, screenROI_after, 15, false)
184
+ #times = time_to_display_color(colorROI, color, timeout)
185
+ #log(Elog::ELogLevel::DEBUG, "times[0]=" + times[0].to_s + " times[1]=" + times[1].to_s) if(debug_log == true)
186
+ dataValue = time_diff_milli(times[0], times[1])
187
+ tcfail "Failed to go to channel #{to_channel}" if(dataValue == 0)
188
+ dataValue_s = dataValue.to_s
189
+ #tcfail "Failed to get a valid sample #{dataValue_s} ms" if(dataValue < 100)
190
+ post_result(times[0].to_f, times[1].to_f) if @test_case.send(:is_sword?)
191
+ log(Elog::ELogLevel::DURATION,"Time to channel #{to_channel}|" + dataValue_s)
192
+ end
193
+
194
+ def measure_guide_navigate(direction, from_channel=nil)
195
+ debug_log = false
196
+ if direction == 'down' or direction == 'up' or direction == 'page_up' or direction == 'page_down'
197
+ screenROI = :guide_focused_program_channel
198
+ else
199
+ screenROI = :guide_current_time_slot
200
+ end
201
+ timeout=15
202
+ unless guide_banner_appears?
203
+ press_guide_sleep
204
+ sleep 3.sec
205
+ tcfail "Failed to go to guide" unless guide_banner_appears?
206
+ end
207
+ unless from_channel == nil
208
+ perf_tune_to_channel(from_channel)
209
+ sleep 5.sec
210
+ end
211
+ loginfo3 "Initial screen",true,false,"image"
212
+ key='up_arrow'
213
+ if direction == 'down'
214
+ key='down_arrow'
215
+ elsif direction == 'up'
216
+ key='up_arrow'
217
+ elsif direction == 'left'
218
+ key='left_arrow'
219
+ elsif direction == 'right'
220
+ key='right_arrow'
221
+ elsif direction == 'page_up'
222
+ key='page_up'
223
+ elsif direction == 'page_down'
224
+ key='page_down'
225
+ end
226
+ if(direction == 'left' or direction == 'right' )
227
+ api_hp_time_for_screen_change screenROI, key=key, timeout=5000, log_text="Time for screen to change", screen_capture_every_ms=100, verifies=1, between_verifies_ms=0, report_to_sword=true, roi_type="GOLDENROI:Spectrum101_H_DEFAULT"
228
+ else
229
+ api_hp_time_to_number_update screenROI, original_value=nil, key=key, timeout_ms=2000, log_text="Time to arrow up", screen_capture_every_ms=10, verifies=1, between_verifies_ms=0, report_to_sword=true, roi_type="OCRROI:default"
230
+ end
231
+ end
232
+
233
+ def measure_guide_navigate_old(direction, from_channel=nil)
234
+ debug_log = false
235
+ if direction == 'down' or direction == 'up' or direction == 'page_up' or direction == 'page_down'
236
+ screenROI_before = stb_img_roi(:guide_network_logo)
237
+ screenROI_after = stb_img_roi(:guide_network_logo)
238
+ else
239
+ screenROI_before = stb_img_roi(:guide_current_time_slot)
240
+ screenROI_after = stb_img_roi(:guide_current_time_slot)
241
+ end
242
+ timeout=15
243
+ unless guide_banner_appears?
244
+ press_guide_sleep
245
+ sleep 3.sec
246
+ tcfail "Failed to go to guide" unless guide_banner_appears?
247
+ end
248
+ unless from_channel == nil
249
+ perf_tune_to_channel(from_channel)
250
+ sleep 5.sec
251
+ end
252
+ filename = (capture_screen_to("tmp_stb_#{$stb_id}.jpg"))
253
+ screenROI_before.referenceImage = filename
254
+ loginfo3 "Initial screen",true,false,"image"
255
+ if direction == 'down'
256
+ press_down_arrow 0
257
+ elsif direction == 'up'
258
+ press_up_arrow 0
259
+ elsif direction == 'left'
260
+ press_left_arrow 0
261
+ elsif direction == 'right'
262
+ press_right_arrow 0
263
+ elsif direction == 'page_up'
264
+ press_page_up 0
265
+ elsif direction == 'page_down'
266
+ press_page_down 0
267
+ end
268
+ startTime=Time.now()
269
+ loginfo2 "Before time_for_screen_change function"
270
+ times = time_for_screen_change(screenROI_before, screenROI_after, 15, false)
271
+ stopTime = times[1]
272
+
273
+ loginfo2 "startTime=#{startTime.strftime('%H:%M:%S.%N')}, stopTime=#{stopTime.strftime('%H:%M:%S.%N')}"
274
+ #log(Elog::ELogLevel::DEBUG, "times[0]=" + startTime.to_s + " times[1]=" + times[1].to_s) if(debug_log == true)
275
+ dataValue = time_diff_milli(startTime, times[1])
276
+ tcfail "Failed to navigate #{direction}" if(dataValue == 0)
277
+ dataValue = dataValue.to_s
278
+ post_result(startTime.to_f, times[1].to_f) if @test_case.send(:is_sword?)
279
+ log(Elog::ELogLevel::DURATION,"Time to navigate #{direction}|" + dataValue)
280
+ end
281
+
282
+ def measure_vod_portal_tune(vod_portal_channel)
283
+ if (stb_high_def?)
284
+ timeout=15
285
+ press_c_sleep
286
+ press_c_sleep
287
+ press_c_sleep
288
+ press_exit_sleep
289
+ tune_immediately_to @test_case.options[:channels][0]
290
+ sleep 5.sec
291
+ perf_tune_to_channel vod_portal_channel
292
+ api_time_to_display_image_area :vod_portal_home_logo, timeout_ms=10000, log_text="Time to display vod portal", screen_capture_every_ms=100, verifies=1, between_verifies_ms=0, report_to_sword=true, roi_type="DUALROI:MOTO"
293
+ else
294
+ debug_log = false
295
+ icon_roi = stb_img_roi(:vod_portal_home_logo)
296
+ timeout=15
297
+ press_c_sleep
298
+ press_c_sleep
299
+ press_c_sleep
300
+ press_exit_sleep
301
+ tune_immediately_to @test_case.options[:channels][0]
302
+ sleep 5.sec
303
+ perf_tune_to_channel vod_portal_channel
304
+ times = time_to_display_image(icon_roi, 15)
305
+ log(Elog::ELogLevel::DEBUG, "times[0]=" + times[0].to_s + " times[1]=" + times[1].to_s) if(debug_log == true)
306
+ dataValue = time_diff_milli(times[0], times[1])
307
+ tcfail "Failed to go vod portal #{vod_portal_channel}" if(dataValue == 0)
308
+ dataValue = dataValue.to_s
309
+ post_result(times[0].to_f, times[1].to_f) if @test_case.send(:is_sword?)
310
+ log(Elog::ELogLevel::DURATION,"Time to vod portal channel: #{vod_portal_channel}|" + dataValue)
311
+ end
312
+ end
313
+
314
+
315
+ def play_dvr_asset report_duration=false
316
+ if $rti_flag
317
+ tcunsupported "Box['#{fetch_stb_model}'] not supported." unless (stb_capable_of? 'DVR' or odn_web_server_odn_diags_mrdvr_authorized?)
318
+ else
319
+ tcunsupported "Box['#{fetch_stb_model}'] not supported." unless stb_capable_of? 'DVR'
320
+ end
321
+ tcfail "Failed to soft power STB" unless power_on_stb?
322
+ screen_area = stb_img_roi(:partial_screen_bottom)
323
+ videoROI = DSL::ImageRoi.new(70,188,526,60, 0, "")
324
+ tune_immediately_to @test_case.options[:channels][0]
325
+ #show_list_launch_and_verify
326
+ press_list_sleep
327
+
328
+ if !show_list_l_tab_highlighted?
329
+ loginfo3 "Old DVR UI detected"
330
+ unless !show_list_screen_empty_list?
331
+ press_exit_sleep
332
+ #tune_immediately_to @test_case.options[:channels][0]
333
+ press_record_sleep
334
+ sleep 20.sec
335
+ #show_list_launch_and_verify
336
+ press_list_sleep
337
+ tcfail "List is empty" unless !show_list_screen_empty_list?
338
+ end
339
+ press_select_sleep
340
+ sleep 2.sec
341
+ sleep 2.sec
342
+ press_select 0
343
+ else
344
+ loginfo3 "New DVR UI detected"
345
+ press_select_sleep
346
+ unless show_list_l_menu_highlighted? 1
347
+ press_exit_sleep
348
+ #tune_immediately_to @test_case.options[:channels][0]
349
+ press_record_sleep
350
+ sleep 20.sec
351
+ #show_list_launch_and_verify
352
+ press_list_sleep
353
+ tcfail "List is empty" unless show_list_l_menu_highlighted? 1
354
+ end
355
+ press_select_sleep if show_list_l_menu_highlighted?
356
+ loginfo3 "Screen before pressing first select",true,false,"video"
357
+ sleep 3.sec
358
+ # loginfo3 "Check for show_list_series_episode_menu_item_highlighted",true,false,"video"
359
+ # if show_list_series_episode_menu_item_highlighted?
360
+ # loginfo3 "Select for show_list_series_episode_menu_item_highlighted"
361
+ # press_select_sleep
362
+ # sleep 3.sec
363
+ # end
364
+ loginfo3 "Check for show_list_episode_menu_item_highlighted",true,false,"video"
365
+ if show_list_episode_menu_item_highlighted?
366
+ loginfo3 "Select for show_list_episode_menu_item_highlighted"
367
+ press_select_sleep
368
+ sleep 3.sec
369
+ end
370
+ press_select_sleep
371
+ sleep 3.sec
372
+ startTime = Time.now
373
+ loginfo3 "Screen before pressing select, startTime=#{startTime.strftime('%H:%M:%S.%N')}",true,false,"video"
374
+ press_select 0
375
+ press_select 0
376
+ press_select 0
377
+ end
378
+ startTime = Time.now
379
+ #wait_till_black_screen(500, 0)
380
+ # if (wait_till_roi_is_black(videoROI, 5000,50,1,45) == 0)
381
+ # press_stop_sleep
382
+ # tcfail "Screen did not transition to black within 5 seconds"
383
+ # end
384
+
385
+ #tcfail "No video" if(wait_till_video_is_playing(15000, 100, 2, 'bottom',:dvr_vod_starting) == 0)
386
+ #if (wait_till_roi_is_not_black(videoROI, 15000,50,1, 45) == 0)
387
+ if(wait_till_video_is_playing(15000, 50, 2, 'side') == 0)
388
+ press_stop_sleep
389
+ tcfail "No video"
390
+ end
391
+
392
+ endTime = Time.now
393
+ press_stop_sleep
394
+ loginfo3 "StopTime=#{endTime.strftime('%H:%M:%S.%N')}"
395
+ # if (wait_till_roi_is_black(videoROI, 1000,50,1,45) != 0)
396
+ # tcfail "No video" if (wait_till_roi_is_not_black(videoROI, 5000,50,1, 45) == 0)
397
+ # endTime = Time.now
398
+ # loginfo3 "New StopTime=#{endTime.strftime('%H:%M:%S.%N')}"
399
+ # end
400
+ # tcfail "No video" if(wait_till_video_is_playing(4000, 100, 2, 'all_screen_but_info_banner') == 0)
401
+ #press_select_sleep
402
+ if report_duration==true
403
+ dataValue = time_diff_milli(startTime, endTime).to_s
404
+ post_result(startTime.to_f, endTime.to_f)
405
+ log Elog::ELogLevel::DURATION,"DVR start time|" + dataValue
406
+ end
407
+ end
408
+
409
+ def eos_pop_time it=1,resume_play=true
410
+ if $rti_flag
411
+ tcunsupported "Box['#{fetch_stb_model}'] not supported." unless (stb_capable_of? 'DVR' or odn_web_server_odn_diags_mrdvr_authorized?)
412
+ else
413
+ tcunsupported "Box['#{fetch_stb_model}'] not supported." unless stb_capable_of? 'DVR'
414
+ end
415
+
416
+ colorROI = stb_img_roi(:end_of_dvr_session_highlight)
417
+ color = [0,101,156]
418
+ play_dvr_asset false
419
+
420
+ dvr_eos_menu_roi = lookup_ocr_roi(:dvr_stop_and_save)
421
+ if text_on_screen_similar dvr_eos_menu_roi, "Stop and Save"
422
+ press_down_arrow_sleep
423
+ press_down_arrow_sleep
424
+ press_select 3.sec
425
+ else
426
+ sim = color_similarity_to_screen colorROI, color[0], color[1], color[2]
427
+ tcfail "Did not display start menu" if sim < 0.8
428
+ press_select 3.sec
429
+ end
430
+
431
+ press_stop 0
432
+ times = time_to_display_color(colorROI, color, 10)
433
+ dataValue = time_diff_milli(times[0], times[1])
434
+ tcfail "Failed to display dvr end of session screen" if(dataValue == 0)
435
+ dataValue = dataValue.to_s
436
+ post_result(times[0].to_f, times[1].to_f) if @test_case.send(:is_sword?)
437
+ log(Elog::ELogLevel::DURATION,"Time to dvr end of session #{it}|" + dataValue)
438
+ end
@@ -0,0 +1,660 @@
1
+ require './dsllib/common/utils/tmc_utils'
2
+ require './dsllib/performance/measure_tune'
3
+ require 'json'
4
+ require 'date'
5
+ require 'base64'
6
+ require './lib/helpers/tmc_helpers/tmc_helpers'
7
+
8
+ module PerfLib
9
+ #### Reset the STB for performace test execution ####
10
+ def _perf_reset_stb()
11
+ # Reset packages and credit limit for STB
12
+ _reset_stb_failed "Failed to reset packages" unless _reset_packages_for_stb
13
+
14
+ loginfo2 "Resetting NVRAM...",false
15
+
16
+ reset_nvram_from_mas
17
+ sleep 5.min
18
+
19
+ # Reboot STB to reset it's state
20
+ loginfo2 "Rebooting stb to reset state ...",false
21
+ (_reset_stb_failed "Failed to reboot STB using AC power") unless stb_reboot_using_ac_power
22
+ (_reset_stb_failed "Failed to Reboot STB") unless stb_wait_till_finish_rebooting(true)
23
+ loginfo2 "Successfully rebooted STB",false
24
+
25
+ # Tuning to home channel
26
+ loginfo2 "Tuning to home channel : [#{fetch_option(:a_home_channel)}] ..."
27
+ press_exit_sleep
28
+ tune_immediately_to fetch_option(:a_home_channel)
29
+ press_exit_sleep
30
+ end
31
+
32
+ #
33
+ # Split array from a CSV in options[plural_symbol] into an array and put
34
+ # it back in options[plural_symbol]. Then put options[plural_symbol][stbid]
35
+ # into options[singular_symbol] If options[singular_symbol] is already
36
+ # populated, this function will not change anything
37
+ #
38
+ # IE: split_array_to(stbid, :models, :model)#
39
+
40
+ def split_array_to(stbid, plural_symbol, singular_symbol, mandatory = true)
41
+ if (options[singular_symbol] == nil)
42
+
43
+ if (options[plural_symbol] == nil)
44
+ if (mandatory)
45
+ raise new Exception("No :" + plural_symbol.to_s + " or :" + singular_symbol.to_s + " in script options. At least one is required")
46
+ else
47
+ loginfo(":" + plural_symbol.to_s + " or :" + singular_symbol.to_s + " not found but is not mandatory for this test.")
48
+ return
49
+ end
50
+ end
51
+ # If we're here, we have an options[plural_symbol]
52
+ if (options[plural_symbol].class == String)
53
+ options[plural_symbol] = options[plural_symbol].split(",")
54
+ end
55
+ if (options[plural_symbol].length < stbid)
56
+ err = "Not enough " + plural_symbol.to_s + " to assign one to stb ID " + stbid.to_s
57
+ if (mandatory)
58
+ raise new Exception(err)
59
+ else
60
+ loginfo(err + " but they were not mandatory for this test.");
61
+ return
62
+ end
63
+ end
64
+ options[singular_symbol] = options[plural_symbol].at(stbid - 1)
65
+ end
66
+ end
67
+
68
+ def get_channels(channel_type)
69
+ channel_type = fetch_option(:head_end).downcase.strip + "_" + channel_type.downcase.strip + "_channels"
70
+ return fetch_option(channel_type.to_sym).strip.to_arr
71
+ end
72
+
73
+ def perf_initialize_execution()
74
+ press_exit(5.sec())
75
+
76
+ perf_tune_to_channel($initial_tune_channel, 5)
77
+
78
+ return true if (perf_verify_video_playing?)
79
+
80
+ #loginfo "WARN: Video not playing for INTIAL channel "+$initial_tune_channel+"; Unable to INITIALIZE"
81
+ loginfo "WARN: Video not playing for INITIAL channel #{$initial_tune_channel}; Unable to INITIALIZE"
82
+
83
+ return false
84
+ end
85
+
86
+ def perf_verify_video_playing? time_out_in_milli_sec=1500, retries=10, sleepTimeInSec=1, area='all_but_info_banner'
87
+ result = false
88
+ case
89
+ when (test_case.dut.box_code == 'hnav')
90
+ videoROI = stb_img_roi(:fullscreen_roi)
91
+ when area == 'bottom'
92
+ videoROI = stb_img_roi(:partial_screen_bottom)
93
+ #videoROI = DSL::ImageRoi.new(8, 217, 630, 128, 0, "")
94
+ when area == 'top'
95
+ videoROI = stb_img_roi(:partial_screen_top3)
96
+ #videoROI = DSL::ImageRoi.new(1, 1, 630, 249, 0, "")
97
+ when area == 'side'
98
+ videoROI = stb_img_roi(:partial_screen_side)
99
+ #videoROI = DSL::ImageRoi.new(7, 10, 296, 333, 0, "")
100
+ when area == 'top2'
101
+ videoROI = stb_img_roi(:partial_screen_top2)
102
+ #videoROI = DSL::ImageRoi.new(10, 60, 610, 197, 0, "")
103
+ when area == 'all_but_info_banner'
104
+ videoROI = stb_img_roi(:all_screen_but_info_banner)
105
+ #videoROI = DSL::ImageRoi.new(1,1,630,345, 0, "")
106
+ end
107
+ retries.times do
108
+ return true if (video_playing? videoROI, time_out_in_milli_sec)
109
+ #return true if (video_playing? stb_img_roi(:fullscreen_ignore_info_roi), time_out_in_milli_sec)
110
+ sleep sleepTimeInSec.to_s.to_i.sec unless sleepTimeInSec==0
111
+ end
112
+
113
+ return false
114
+ end
115
+
116
+ def perf_verify_channel_tune? channel_number
117
+ if $rti_flag == false
118
+ loginfo3 "Before guide_banner_verify_channel_number"
119
+ return(guide_banner_verify_channel_number? channel_number)
120
+ else
121
+ loginfo3 "Before info_banner_launch_and_verify_channel_number"
122
+ return(info_banner_launch_and_verify_channel_number channel_number)
123
+ end
124
+ end
125
+
126
+ def perf_time_to_go_to_menu(menu_name)
127
+ #get values
128
+ theseROIvalues = eval("fetch_option(:#{menu_name}_roi).to_i_arr(',')")
129
+ thisTarget = eval("fetch_option(:#{menu_name}_target)")
130
+ thisKey = eval("fetch_option(:#{menu_name}_keypress)")
131
+
132
+ thisROI = OcrRoi.new(theseROIvalues[0], theseROIvalues[1], theseROIvalues[2], theseROIvalues[3], 0, "", thisTarget)
133
+ times = time_to_go_to_menu(thisROI)
134
+ if(times[1] > 0)
135
+ return(times[1] - times[0])
136
+ else
137
+ return(0)
138
+ end
139
+ end
140
+
141
+ def time_to_go_to_menu(menu,thisROI, text)
142
+ #default keypress time
143
+ key_wait_time = 200.ms()
144
+ timeout = 15000 #seconds
145
+ next_error_report_time = 300
146
+
147
+ times = Array.new(2)
148
+ startTime = Time.now()
149
+ times[0] = startTime;
150
+ if(menu == "guide")
151
+ loginfo3 "Screen before pressing 'Guide' button",true,false,"video"
152
+ press_guide 0
153
+ elsif(menu == "show_list")
154
+ loginfo3 "Screen before pressing 'List' button",true,false,"video"
155
+ press_list 0
156
+ elsif(menu == "search")
157
+ loginfo3 "Screen before pressing 'B' button",true,false,"video"
158
+ press_b 0
159
+ end
160
+ #eval("#{thisKey}(key_wait_time)")
161
+ begin
162
+ target_found1 = false
163
+ target_found2 = false
164
+ target_found1 = screen_matches_for_icon_roi thisROI, thisROI.referenceImage, 1
165
+ if(target_found1 == true)
166
+ times[1] = Time.now()
167
+ sleep 40.ms
168
+ target_found2 = screen_matches_for_icon_roi thisROI, thisROI.referenceImage, 1
169
+ end
170
+ nowTime = Time.now()
171
+ if (time_diff_milli(startTime, nowTime) > next_error_report_time) and !target_found2 #capture screenshot after each second
172
+ next_error_report_time+=300
173
+ loginfo3 "Image still not found, Region=#{thisROI.left}:#{thisROI.top}:#{thisROI.width}:#{thisROI.height}, Threshold=#{thisROI.threshold},",true,true,"menu"
174
+ end
175
+ end while time_diff_milli(startTime, nowTime) < timeout and !target_found2
176
+ if target_found2
177
+ loginfo3 "Image found, Region=#{thisROI.left}:#{thisROI.top}:#{thisROI.width}:#{thisROI.height}, Threshold=#{thisROI.threshold},",true,true,"menu"
178
+ else
179
+ loginfo3 "Image not found, Region=#{thisROI.left}:#{thisROI.top}:#{thisROI.width}:#{thisROI.height}, Threshold=#{thisROI.threshold},",true,true,"menu"
180
+ times[1] = startTime;
181
+ end
182
+ return times
183
+ end
184
+
185
+ def time_to_go_to_guide()
186
+ #guideROI = DSL::ImageRoi.new(282, 407, 50, 38, 85, "tsimages/icons/odn52/hd/a_icon.JPG")
187
+ guideROI = stb_img_roi(:guide_screen_b_icon)
188
+
189
+ #guideROI = DSL::OcrRoi.new(330, 408, 125, 34, 6, "", "Find Channels")
190
+ return(time_to_go_to_menu("guide", guideROI, "Find Channels"))
191
+ end
192
+
193
+ def time_to_go_to_show_list()
194
+ #show_listROI = DSL::OcrRoi.new(45, 22, 79, 40, 6, "", "DVR")
195
+ #tcunsupported "Box['#{fetch_stb_model}'] not supported." unless stb_capable_of? 'DVR'
196
+ tcunsupported "Box['#{fetch_stb_model}'] not supported." unless stb_capable_of? 'DVR' or odn_web_server_odn_diags_mrdvr_authorized?
197
+ show_listROI = lookup_ocr_roi(:show_list_dvr)
198
+
199
+ press_list 0
200
+ #return(time_to_go_to_menu("show_list", show_listROI, "DVR"))
201
+ return(time_to_display_text(show_listROI, "DVR"))
202
+
203
+
204
+ end
205
+
206
+ def perf_tune_to_channel(channel, sleep_time_after_tune=0)
207
+ loginfo3 "Changed per_key_wait_time to 400 ms"
208
+ total_wait_time = 0
209
+ per_key_wait_time = 400
210
+ key_seq = []
211
+ channel_arr = channel.to_s.chars.to_a
212
+ channel_length = channel_arr.length
213
+ for i in 0..(channel_length-1)
214
+ #press_key channel_arr[i]
215
+ instance_eval "press_#{channel_arr[i]} 0"
216
+ success_log_key_press "#{channel_arr[i]}", per_key_wait_time
217
+ sleep per_key_wait_time #unless i == channel_length-1
218
+ end
219
+ press_select 0 unless channel_length == 4
220
+ sleep sleep_time_after_tune.to_s.to_i.sec if (sleep_time_after_tune!=0)
221
+ end
222
+
223
+ def perf_tune_to_channel_seq(channel, sleep_time_after_tune=0,add_zeros=true)
224
+ total_wait_time = 0
225
+ per_key_wait_time = 200
226
+ key_seq = []
227
+ channel_arr = channel.to_s.chars.to_a
228
+
229
+ if(add_zeros==true)
230
+ for i in 1..(4-channel_arr.length)
231
+ key_seq.push(["0", per_key_wait_time])
232
+ total_wait_time = total_wait_time + per_key_wait_time
233
+ end
234
+ end
235
+ for i in 0..(channel_arr.length-1)
236
+ per_key_wait_time = 0 if (i == (channel_arr.length-1))
237
+ key_seq.push([channel_arr[i], per_key_wait_time])
238
+ total_wait_time = total_wait_time + per_key_wait_time
239
+ end
240
+
241
+ _press_key_sequence key_seq
242
+ sleep total_wait_time
243
+
244
+ sleep sleep_time_after_tune.to_s.to_i.sec if !(sleep_time_after_tune==0)
245
+ end
246
+ def perf_tune_to_random_channel(channels, sleep_time_after_tune=0)
247
+ chan = get_random_channel(options[:channels])
248
+ if (chan == nil)
249
+ loginfo "WARN: No channel to random tune to"
250
+ return
251
+ end
252
+ perf_tune_to_channel(chan, sleep_time_after_tune)
253
+ end
254
+
255
+ def initialize_execution(chan)
256
+ #videoROI = DSL::ImageRoi.new(1, 1, 630, 270, 0, "")
257
+ videoROI = stb_img_roi(:video_playing_fullscreen_roi)
258
+ for retryCount in 1..3
259
+ press_exit_sleep
260
+ sleep 4.sec
261
+ perf_tune_to_channel(chan, 5)
262
+ sleep 4.sec
263
+ return(true) if (video_playing? videoROI, 2000)
264
+ #return(true) if ( wait_till_video_is_playing(time_out_in_ms=5000, between_samples_ms=1000, samples=1, area='all_but_info_banner'))
265
+ loginfo3 "No video",true,true,"video"
266
+ press_power(8.sec())
267
+ end
268
+ return false
269
+ end
270
+
271
+ def get_random_channel(channels)
272
+ return nil if (channels == nil)
273
+ return(channels[rand(channels.length)])
274
+ end
275
+
276
+ def get_largest_block()
277
+ begin
278
+ loginfo(options[:stb_ip])
279
+ r = get_snmp(options[:stb_ip], ".1.3.6.1.4.1.4491.2.3.1.1.4.7.1.0", 'public')
280
+ loginfo("largest_block=" + r)
281
+ return r.to_i
282
+ rescue StandardError => e
283
+ return(0)
284
+ end
285
+ end
286
+
287
+ def get_heap_size()
288
+ begin
289
+ loginfo(options[:stb_ip])
290
+ r = get_snmp(options[:stb_ip], ".1.3.6.1.4.1.4491.2.3.1.1.4.8.1.0", 'public')
291
+ loginfo("heap_size=" + r)
292
+ return r.to_i
293
+ rescue StandardError => e
294
+ return(0)
295
+ end
296
+ end
297
+
298
+ def get_available_heap()
299
+ begin
300
+ loginfo(options[:stb_ip])
301
+ r = get_snmp(options[:stb_ip], ".1.3.6.1.4.1.4491.2.3.1.1.4.8.2.0", 'public')
302
+ loginfo("available_heap=" + r)
303
+ return r.to_i
304
+ rescue StandardError => e
305
+ return(0)
306
+ end
307
+ end
308
+
309
+ =begin
310
+ MSD 2016-01-12 this is not used and should be deleted on next pass
311
+ def record_stats_to_sword(startTime,endTime)
312
+ startTime = Time.now if startTime == 0
313
+ endTime = Time.now if endTime == 0
314
+ largest_block = get_largest_block().to_s
315
+ heap_size = get_heap_size().to_s
316
+ available_heap = get_available_heap().to_s
317
+ if(options[:db_write] == "true")
318
+ writeNumericalResult(startTime.to_i, endTime.to_i, largest_block)
319
+ writeNumericalResult(startTime.to_i, endTime.to_i, heap_size)
320
+ writeNumericalResult(startTime.to_i, endTime.to_i, available_heap)
321
+ end
322
+ log(Elog::ELogLevel::DURATION,"Largest block|" + largest_block)
323
+ log(Elog::ELogLevel::DURATION,"Heap size|" + heap_size)
324
+ log(Elog::ELogLevel::DURATION,"Available heap|" + available_heap)
325
+ end
326
+ =end
327
+
328
+ def report_largest_block_to_sword(startTime,endTime)
329
+ startTime = Time.now if startTime == 0
330
+ endTime = startTime if endTime == 0
331
+ largest_block = get_largest_block().to_s
332
+ if is_sword?
333
+ post_result(startTime.to_f, endTime.to_f, :return_no => largest_block)
334
+ #writeNumericalResult(startTime.to_i, endTime.to_i, largest_block)
335
+ end
336
+ log(Elog::ELogLevel::DURATION,"Largest block|" + largest_block)
337
+ end
338
+
339
+ def report_heap_size_to_sword(startTime,endTime)
340
+ startTime = Time.now if startTime == 0
341
+ endTime = startTime if endTime == 0
342
+ heap_size = get_heap_size().to_s
343
+ if is_sword?
344
+ post_result(startTime.to_f, endTime.to_f, :return_no => heap_size)
345
+ #writeNumericalResult(startTime.to_i, endTime.to_i, heap_size)
346
+ end
347
+ log(Elog::ELogLevel::DURATION,"Heap size|" + heap_size)
348
+ end
349
+
350
+ def report_available_heap_to_sword(startTime,endTime)
351
+ startTime = Time.now if startTime == 0
352
+ endTime = startTime if endTime == 0
353
+ available_heap = get_available_heap().to_s
354
+ if is_sword?
355
+ post_result(startTime.to_f, endTime.to_f, :return_no => available_heap)
356
+ #writeNumericalResult(startTime.to_i, endTime.to_i, available_heap)
357
+ end
358
+ log(Elog::ELogLevel::DURATION,"Available heap|" + available_heap)
359
+ end
360
+
361
+ def change_roi_file(file=nil)
362
+ $roi_class_file=file
363
+ loginfo "Changing roi file to:#{file}"
364
+ TwcNavRoi.fetch_attribute('OCRROI')
365
+ end
366
+
367
+ def after_test(status=nil)
368
+ log Elog::ELogLevel::SUCCESS, "Test Passed" if status == :pass
369
+ log Elog::ELogLevel::STOP, "Test completed"
370
+ end
371
+
372
+ def test_error(msg, post)
373
+ return if msg == "TCUNSUPPORTED";
374
+ post_error_result(msg) if post == true
375
+ _logmessage Elog::ELogLevel::FAIL, _failure_message(msg), true, false
376
+ end
377
+
378
+ =begin
379
+ MSD 2016-01-12 this is not used and should be deleted on next pass
380
+ def writeNumericalResult(startTime, stopTime, dataValue)
381
+ return send_results(startTime, stopTime, "","" + dataValue, "")
382
+ end
383
+ =end
384
+
385
+ def test_plan_end
386
+ params = {
387
+ :test_plan_result_id => @sword_test_plan_result_id,
388
+ }
389
+ begin
390
+ url = "#{@sword_base_url}/test_plan_results/tmc_dsl_end_plan?"
391
+ url = url.concat(params.collect { |k,v| "#{k}=#{URI::escape(v.to_s)}" }.join('&'))
392
+ logger.debug url
393
+ web_get(url)
394
+ rescue => ex
395
+ logger.error "Failed to report end of plan to Sword #{ex}"
396
+ end
397
+ end
398
+
399
+ def current_tests
400
+ if @sword_report_grouping.nil?
401
+ [@sword_test_cycle_test_case_id]
402
+ else
403
+ # If tests are grouped then actions should affect all of the tests
404
+ @sword_report_grouping.map {|g| g[:test_cycle_test_case_id]}
405
+ end
406
+ end
407
+
408
+ #post result to SWORD
409
+ # TODO: NO SCRIPT SHOULD CALL THIS METHOD
410
+ def post_result(start_ts, stop_ts, return_no, args = {})
411
+ return unless is_sword?
412
+ #######################################################
413
+ #mbarnes I think this signifies that it's the first test case in the cycle
414
+ if args[:execution_metric].nil?
415
+ tctc_id = @sword_test_cycle_test_case_id
416
+ else
417
+ # If an execution metric is given, use the corresponding test cycle test case id
418
+ logger.debug("Report grouping for post_result: #{@sword_report_grouping}")
419
+ tctc_id = @sword_report_grouping.find {|g| g[:execution_metric] = args[:execution_metric]}[:test_cycle_test_case_id]
420
+ end
421
+ data = {
422
+ 'test_plan_result_id' => @sword_test_plan_result_id,
423
+ 'test_cycle_test_case_id' => tctc_id,
424
+ 'hardware_unit_id' => @sword_hardware_unit_id,
425
+ 'result'=> {
426
+ 'start_ts' => start_ts,
427
+ 'stop_ts' => stop_ts
428
+ }
429
+ }
430
+ unless args[:return_title].nil?
431
+ data['return_title'] = args[:return_title]
432
+ end
433
+ unless return_no.nil?
434
+ data['result']['return_no'] = return_no
435
+ end
436
+ post_json(data)
437
+ end
438
+
439
+ def post_error_result(tcr_auto_detail_text)
440
+ #Turned off for now, because graph does not filter these. sword does not ingest result_value:
441
+ # https://gitlab-test.enwd.co.sa.charterlab.com/sword_grp/sword/blob/master/app/models/tcr_auto_detail.rb#L27
442
+ return
443
+ return unless is_sword?
444
+ now = Time.now.to_f
445
+ current_tests.each do |tctc_id|
446
+ data = {
447
+ 'test_plan_result_id' => @sword_test_plan_result_id,
448
+ 'test_cycle_test_case_id' => tctc_id,
449
+ 'hardware_unit_id' => @sword_hardware_unit_id,
450
+ 'result' => {
451
+ 'start_ts' => now,
452
+ 'stop_ts' => now,
453
+ 'result_value' => 'ERROR',
454
+ 'tcr_auto_detail_text' => tcr_auto_detail_text
455
+ }
456
+ }
457
+ post_json(data)
458
+ end
459
+ end
460
+
461
+ def post_reboot_result(reboot_time)
462
+ #TODO: sword disregards result_value, so whatever this posts will be considered a measurement and will skew results
463
+ return unless is_sword?
464
+ #now = Time.now.to_f
465
+ #json = '{"test_plan_result_id":"30643","test_cycle_test_case_id":"107165","hardware_unit_id":"1067","result":{"start_ts":1370643834.329,"stop_ts":1370643837.849}}'
466
+ current_tests.each do |tctc_id|
467
+ data = {
468
+ 'test_plan_result_id' => @sword_test_plan_result_id,
469
+ 'test_cycle_test_case_id' => tctc_id,
470
+ 'hardware_unit_id' => @sword_hardware_unit_id,
471
+ 'result' => {
472
+ 'start_ts' => reboot_time,
473
+ 'stop_ts' => reboot_time,
474
+ 'result_value' => 'REBOOT',
475
+ 'return_value' => reboot_time,
476
+ 'return_no' => 1
477
+ }
478
+ }
479
+ post_json(data)
480
+ end
481
+ end
482
+
483
+ def post_end_of_test_case()
484
+ return unless is_sword?
485
+ current_tests.each do |tctc_id|
486
+ data = {
487
+ 'test_plan_result_id' => @sword_test_plan_result_id,
488
+ 'test_cycle_test_case_id' => tctc_id,
489
+ 'hardware_unit_id' => @sword_hardware_unit_id,
490
+ 'case_complete' => 'true'
491
+ }
492
+ post_json(data)
493
+ end
494
+ end
495
+
496
+ def post_end_of_test_plan()
497
+ return unless is_sword?
498
+ data = {"test_plan_result_id" => @sword_test_plan_result_id,
499
+ "finished"=> 'true'
500
+ }
501
+ post_json(data)
502
+ end
503
+
504
+ #post json to SWORD
505
+ # TODO: NO SCRIPT SHOULD CALL THIS METHOD
506
+ def post_json(data)
507
+ url = @sword_base_url + @sword_result_url
508
+ logger.debug "SWORD POST URL :: #{url}"
509
+ tcrad_data = {
510
+ "test_plan_result_id" => @sword_test_plan_result_id,
511
+ "test_case_result_id" => @sword_test_case_result_id,
512
+ "hardware_unit_id" => @sword_hardware_unit_id,
513
+ "sword_iteration" => iteration
514
+ }
515
+ if (nil != data["return_title"])
516
+ tcrad_data["return_title"] = data["return_title"]
517
+ end
518
+ tcrad_id = @sword_tcr_auto_detail_id
519
+ if (nil != tcrad_id && !tcrad_id.empty?)
520
+ logger.info "post_json: Using tcrad #{tcrad_id} for TCRAD"
521
+ tcrad_data["tcrad_id"] = tcrad_id
522
+ data["tcrad_id"] = tcrad_id
523
+ end
524
+ data["tcrad_data"] = tcrad_data
525
+ headers = {'Content-Type' => 'application/json', 'Accept' => '*/*'}
526
+ resp = web_post(url, json: data, headers: headers)
527
+ logger.debug "Resp :: #{resp.body}"
528
+ if (resp.body.include?("Success:"))
529
+ tcrad = resp.body.split("=")[1]
530
+ @sword_tcr_auto_detail_id = tcrad
531
+ end
532
+ end
533
+
534
+ def clear_tuner_caches?(start_channel=516, num_channel_changes=6)
535
+ log Elog::ELogLevel::INFO2, "Clearing tuner cache..."
536
+ perf_tune_to_channel(start_channel.to_s, sleep_time_after_tune=6)
537
+ cur_chan_num=start_channel
538
+ good_tunes=0
539
+ tries=0
540
+ while good_tunes<num_channel_changes and tries<30
541
+ press_channel_up(0)
542
+ sleep 3.sec
543
+ if $rti_flag == false
544
+ good_tunes+=1
545
+ else
546
+ next_chan_num=rti_get_channel_number.to_i
547
+ if(next_chan_num>cur_chan_num)
548
+ good_tunes+=1
549
+ end
550
+ end
551
+ cur_chan_num=next_chan_num
552
+ tries+=1
553
+ end
554
+ return true if good_tunes==num_channel_changes
555
+ return false
556
+ end
557
+
558
+ def show_guide_days(number_of_days)
559
+ press_guide_sleep unless guide_banner_appears?
560
+ sleep 3.sec
561
+ if guide_banner_appears?
562
+ loginfo2 "Moving to #{number_of_days} days ahead."
563
+ press_key number_of_days
564
+ press_right_arrow_sleep
565
+ loginfo2 'Moving back to current date.'
566
+ press_key number_of_days
567
+ press_left_arrow_sleep
568
+ end
569
+ press_exit_sleep
570
+ end
571
+
572
+ def play_vod()
573
+ broadcast_channel = fetch_option(:a_live_channel_1)
574
+ tune_immediately_to broadcast_channel
575
+ tcfail "Failed to tune on channel: [#{broadcast_channel}]" unless info_banner_launch_and_verify_channel_number broadcast_channel
576
+ mod_channel = mod_channel_number
577
+ tcfail "Failed to tune to MOD Channel: [#{mod_channel}]" unless od_screen_tune_to_channel mod_channel
578
+ loginfo "The STB tunes to the MOD menu screen."
579
+
580
+ loginfo "Performing Step 1.B: Select a movie and purchase it via selecting the Buy option and entering a valid Purchase PIN."
581
+ asset = od_screen_locate_and_navigate_asset mod_channel
582
+ tcfail "Invalid Execution unpurchased OD asset not available" if asset == nil
583
+ tcfail "Unable to purchase focused asset #{asset}" unless od_screen_purchase_focused_asset true,false
584
+ tcfail 'OD asset unavailable' if od_asset_unavailable_barker_appears?
585
+ tcfail 'OD asset could not be purchased' unless od_screen_focused_asset_purchased?
586
+ loginfo "Completed Step 1.B: The movie is purchased."
587
+
588
+ sleep_for_ondemand_asset_play
589
+ cancellation_window = asset[:cancellation_window_in_minutes].to_s.to_i
590
+ sleep (cancellation_window+1).min
591
+ tcfail "The purchase for asset [#{asset[:title]}] was unsuccessful." unless od_screen_asset_verify_successful_purchase asset
592
+
593
+ loginfo "Allow the asset to stream for about 5 minutes."
594
+ tcfail 'OD asset unavailable' if od_asset_unavailable_barker_appears?
595
+ tcfail "Video is not playing after purchasing asset" unless fullscreen_video_playing?
596
+ if cancellation_window<5
597
+ sleep (5-cancellation_window).min
598
+ end
599
+ loginfo "The movie streamed for about 5 minutes."
600
+ end
601
+
602
+ def sleep_while_check_for_reboots(duration_min=30, last_reboot="")
603
+ test_duration = true
604
+ while duration_min > 0
605
+ #last_reboot_read = last_stb_reboot_time false
606
+ last_reboot_read = odn_web_server_odn_diags_last_reboot(options[:stb_ip], last_reboot)
607
+ #loginfo "Reboot1:last_reboot_read=#{last_reboot_read}, last_reboot=#{last_reboot}"
608
+ if (last_reboot != "") and (last_reboot_read != "") and (last_reboot_read != nil) and (last_reboot != nil)
609
+ #loginfo "Reboot2:last_reboot_read=#{last_reboot_read}, last_reboot=#{last_reboot_read}"
610
+
611
+ # if last_reboot.include? "m"
612
+ # resp = last_reboot.slice(0..last_reboot.index('m'))
613
+ # else
614
+ # resp = last_reboot
615
+ # end
616
+ if ((!last_reboot_read.eql?(last_reboot)) and (last_reboot.length>10) and (last_reboot_read.length>10))
617
+ #loginfo "Reboot3:last_reboot_read=#{last_reboot_read}, last_reboot=#{last_reboot_read}"
618
+ begin
619
+ reboot_time = Time.parse(last_reboot_read)
620
+ post_reboot_result(reboot_time)
621
+ rescue
622
+ post_reboot_result(Time.now)
623
+ end
624
+ loginfo "***STB Rebooted:#{last_reboot_read};;;;;;;#{last_reboot}***"
625
+ # loginfo "***STB Rebooted:#{last_reboot_read.length.to_s};;;;;;;#{last_reboot.length.to_s}***"
626
+ # last_reboot_read.split("").each do |i|
627
+ # loginfo "***STB Rebooted1:#{i}"
628
+ # end
629
+ # last_reboot.split("").each do |i|
630
+ # loginfo "***STB Rebooted2:#{i}"
631
+ # end
632
+ last_reboot = last_reboot_read
633
+ File.open("tmp/Last_reboot_stb_#{$stb_id}.txt", 'w') do |f|
634
+ f.puts last_reboot
635
+ end
636
+ end
637
+ end
638
+ if duration_min > 15
639
+ if test_duration == true
640
+ sleep 90.sec
641
+ else
642
+ sleep 15.min
643
+ end
644
+ else
645
+ if test_duration == true
646
+ sleep (duration_min/10).sec
647
+ else
648
+ sleep duration_min.min
649
+ end
650
+ end
651
+ # if test_duration == true
652
+ # duration_min = duration_min - 15
653
+ # else
654
+ duration_min = duration_min - 15
655
+ # end
656
+ end
657
+ last_reboot = last_reboot_read if (last_reboot == "" or last_reboot == nil)
658
+ return last_reboot
659
+ end
660
+ end