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,1328 @@
1
+ #Test automation script version# TA-5.5.mdn released time stamp: 12-03-12 14:40:20
2
+
3
+ require "rubygems"
4
+
5
+ gem "selenium-client"
6
+ require "selenium/client"
7
+ require 'time'
8
+ require './dsllib/common/utils/tmc_utils'
9
+ require './dsllib/common/mas_db/mas_db'
10
+ require './dsllib/common/mas_db/mas_publish'
11
+
12
+ # Private method
13
+ # Use it to sleep till menu loads
14
+ def _selenium_wait_for_menu_to_load
15
+ sleep 5.sec
16
+ end
17
+
18
+ # Use it to fetch screen save timer value from STB Settings
19
+ def fetch_screensaver_timeout
20
+ begin
21
+ selenium = _mas_login
22
+ return '' if selenium.nil?
23
+ _navigate_to_stb_settings(selenium)
24
+ selenium.wait_for_text 'Misc'
25
+ screensaver_timeout = selenium.get_text("//table[10]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]")
26
+ loginfo2 "Screensaver timeout is [#{screensaver_timeout}] minutes"
27
+ return screensaver_timeout
28
+ ensure
29
+ _mas_logout(selenium) unless selenium.nil?
30
+ end
31
+ end
32
+
33
+ # Use it to check if the state of the OD asset last purchased is "Purchased" on MAS.
34
+ # * *Args* :
35
+ # - +asset+ -> name of the OD asset purchased last
36
+ # * *Returns* :
37
+ # - true, if the state of the OD asset purchased is "Purchased" on MAS.
38
+ def verify_last_od_purchase_confirmed?(asset)
39
+ begin
40
+ selenium = _mas_login
41
+ return false if selenium.nil?
42
+ mac_addr = fetch_stb_mac_address
43
+ loginfo2 "Mac address: #{mac_addr}"
44
+ loginfo2 'Going to Status'
45
+ selenium.wait_for_element "dijit_form_DropDownButton_1"
46
+ selenium.click "dijit_form_DropDownButton_1"
47
+ loginfo2 'Going to Mystro Diagnostics'
48
+ selenium.click "//tr[@id='dijit_MenuItem_21']/td[2]", :wait_for => :page
49
+ selenium.select_frame "iframemdn"
50
+ selenium.wait_for_element "dijit_form_Button_0"
51
+ loginfo2 "Entering STB info to get purchase state: btm purchases terminal #{mac_addr}"
52
+ selenium.type "mystroDiags.commandLine", "btm purchases terminal #{mac_addr}"
53
+ selenium.click "dijit_form_Button_0", :wait_for => :page
54
+ btm_text = selenium.get_text("//pre")
55
+ lines=[]
56
+ btm_text.split("\n").each do |line|
57
+ lines.push(line)
58
+ end
59
+ last_purchase = lines[lines.length-3]
60
+ loginfo2 "Last purchase: [#{last_purchase}]"
61
+ return ("#{last_purchase}".include? 'PURCHASED' && "#{asset.strip}")
62
+ ensure
63
+ _mas_logout(selenium) unless selenium.nil?
64
+ end
65
+ end
66
+
67
+ # Use it to fetch the PIN entry parameters from MAS.
68
+ # * *Args* :
69
+ # * *Returns* :
70
+ # - array of values in order:
71
+ # - [0]pin_attempts_permitted, [1]pin_attempts_period_minutes, [2]pin_failure_blockout_period_minutes,
72
+ # - [3]enable_stb_install_verification_pin , [4]stb_install_verification_pin , [5]enable_purchase_pin , [6]purchase_pin_number
73
+ def fetch_pin_entry_parameters
74
+ begin
75
+ selenium = _mas_login
76
+ return [] if selenium.nil?
77
+ pin_entry_parameters = []
78
+ _navigate_to_stb_settings(selenium)
79
+ loginfo2 'Fetching PIN Entry parameters'
80
+ selenium.wait_for_text 'PIN Entry Parameters'
81
+ (1..7).each{|i| pin_entry_parameters.push(selenium.get_text("//table[11]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
82
+ return pin_entry_parameters
83
+ ensure
84
+ _mas_logout(selenium) unless selenium.nil?
85
+ end
86
+ end
87
+
88
+ # Use it to fetch tuning parameters from MAS.
89
+ # * *Args* :
90
+ # * *Returns* :
91
+ # - array of values in order:
92
+ # - [0]timeout_to_auto_accept_channel_entry, [1]power_on_channel(returns 65535 for last channel), [2]tune_to_nearest_channel
93
+ def fetch_tuning_settings
94
+ begin
95
+ selenium = _mas_login
96
+ return [] if selenium.nil?
97
+ tuning_settings = []
98
+ _navigate_to_stb_settings(selenium)
99
+ loginfo2 'Fetching Tuning settings'
100
+ selenium.wait_for_text 'Tuning'
101
+ (1..3).each{|i| tuning_settings.push(selenium.get_text("//table[19]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
102
+ return tuning_settings
103
+ ensure
104
+ _mas_logout(selenium) unless selenium.nil?
105
+ end
106
+ end
107
+
108
+ # Private method
109
+ # Use this method to login to MAS server using selenium
110
+ # * *Returns* :
111
+ # - selenium object if able to login to MAS server else nil
112
+ def _mas_login
113
+ selenium = nil
114
+ retries=0
115
+ begin
116
+ selenium = Selenium::Client::Driver.new \
117
+ :host => "#{fetch_rack_ip}",
118
+ :port => "#{fetch_option(:conductor_port)}",
119
+ :browser => "*firefox",
120
+ :url => "#{fetch_option(:conductor_url)}",
121
+ :timeout_in_second => 180
122
+
123
+ selenium.start_new_browser_session
124
+ loginfo2 'Open Mystro Conductor'
125
+ selenium.open "/mystroui/index.do"
126
+ loginfo2 'Login to Mystro Conductor'
127
+ selenium.wait_for_element "dijit_form_Button_0"
128
+ selenium.type "dijit_form_TextBox_0", "#{fetch_option(:conductor_login)}"
129
+ selenium.type "dijit_form_TextBox_1", "#{fetch_option(:conductor_passwd)}"
130
+ selenium.click "dijit_form_Button_0", :wait_for => :page
131
+ selenium.wait_for_text 'Publishing Status' # wait till 'catalog staus' table appears
132
+ selenium.wait_for_no_element '//img[@src="/mystroui/js/dojo-1.1/dijit/themes/a11y/indeterminate_progress.gif"]' # Wait till all catalog statuses are retrieved
133
+ loginfo2 "Logged into MAS"
134
+ rescue Timeout::Error
135
+ loginfo2 'Connection to MAS conductor Timed Out...'
136
+ retries += 1
137
+ loginfo2 "Retry: #{retries}"
138
+ selenium.close_current_browser_session
139
+ retry unless retries == 4
140
+ return nil
141
+ rescue StandardError => e
142
+ loginfo2 e.message
143
+ loginfo2 'Unable to login to MAS'
144
+ selenium.close_current_browser_session unless selenium.nil?
145
+ return nil
146
+ end
147
+ return selenium
148
+ end
149
+
150
+ # Private method
151
+ # Use this method to logout from MAS server using selenium
152
+ # * *Args* :
153
+ # - +selenium+ -> selenium object
154
+ def _mas_logout selenium
155
+ begin
156
+ loginfo2 'Log out of Mystro Conductor'
157
+ selenium.select_frame "relative=up"
158
+ selenium.click "link=Logout", :wait_for => :page
159
+ loginfo2 'Logged out of MAS'
160
+ rescue StandardError => e
161
+ loginfo2 e.message
162
+ loginfo2 'Failed to logout from MAS'
163
+ ensure
164
+ selenium.close_current_browser_session unless selenium.nil?
165
+ end
166
+ end
167
+
168
+ # Private method
169
+ # Use it to fetch airtime catalog ID's MAS.
170
+ # * *Returns* :
171
+ # - array of airtime calaog ID's from MAS.
172
+ def _fetch_catalog_info
173
+ lines=[]
174
+ begin
175
+ selenium = _mas_login
176
+ return lines if selenium.nil?
177
+ loginfo2 'Going to Status'
178
+ selenium.wait_for_element "dijit_form_DropDownButton_1"
179
+ selenium.click "dijit_form_DropDownButton_1"
180
+ loginfo2 'Going to Mystro Diagnostics'
181
+ selenium.click "//tr[@id='dijit_MenuItem_21']/td[2]", :wait_for => :page
182
+ selenium.select_frame "iframemdn"
183
+ selenium.wait_for_element "dijit_form_Button_0"
184
+ loginfo2 "Entering command 'nav p 1' to get catalog info"
185
+ selenium.type "mystroDiags.commandLine", "nav p 1"
186
+ selenium.click "dijit_form_Button_0", :wait_for => :page
187
+ catalog_text = selenium.get_text("//pre")
188
+ catalog_text.split("\n").each do |line|
189
+ if line.include? 'SEARCH_AIRTIME_GROUP_TYPE'
190
+ lines.push(line.split(" ")[4])
191
+ end
192
+ end
193
+ ensure
194
+ _mas_logout(selenium) unless selenium.nil?
195
+ end
196
+ return lines
197
+ end
198
+
199
+ # Use it to fetch the DVR parameters from MAS.
200
+ # * *Args* :
201
+ # * *Returns* :
202
+ # - array of values in order:
203
+ # - [0]tsb_length, [1]saved, [2]instant_replay_jump_sec, [3]compensation_REW1, [4]compensation_REW2, [5]compensation_REW3,
204
+ # - [6]compensation_FF1, [7]compensation_FF2, [8]compensation_FF3, [9]number_of episodes_to_save_of_series,
205
+ # - [10]record_rerun_episodes_of_series, [11]dvr_jump_value, [12]enable_REW4_FF4,
206
+ # - [13]compensation_REW4, [14]compensation_FF4, [15]dvr_compensation. Use X[15].compensation_value for dvr_compensation value
207
+
208
+ # - [0]tsb_length, [1]saved, [2]instant_replay_jump_sec, [4]number_of episodes_to_save_of_series,
209
+ # - [5]record_rerun_episodes_of_series, [6]dvr_jump_value, [7]enable_REW4_FF4,
210
+ #
211
+
212
+ def fetch_dvr_parameters
213
+ begin
214
+ selenium = _mas_login
215
+ return [] if selenium.nil?
216
+ dvr_parameters = []
217
+ _navigate_to_stb_settings(selenium)
218
+ loginfo2 'Fetching DVR parameters'
219
+ selenium.wait_for_text 'DVR'
220
+
221
+ (1..4).each{|i| dvr_parameters.push(selenium.get_text("//table[6]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
222
+ value = selenium.get_text("//table[6]/tbody/tr[2]/td/table/tbody/tr[5]/td[2]").strip
223
+ if value == 'All'
224
+ dvr_parameters.push('Keep all episodes')
225
+ else
226
+ dvr_parameters.push("Last #{value} episodes")
227
+
228
+ end
229
+ (6..7).each{|i| dvr_parameters.push(selenium.get_text("//table[6]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
230
+ return dvr_parameters
231
+ ensure
232
+ _mas_logout(selenium) unless selenium.nil?
233
+
234
+ end
235
+ end
236
+
237
+ # Use it to fetch the Timeout parameters from MAS.
238
+ # * *Args* :
239
+ # * *Returns* :
240
+ # - array of values(in seconds) in order:
241
+ # - [0]Session Timeout, [1]Volume and Mute Display Timeout, [2]Menu Timeout, [3]Banner: Timeout of Info banner,
242
+ # - [4]Banner:Timeout of Info banner on Chan change, [5]Banner:Timeout on More Info, [6]Banner: Live tab Timeout,
243
+ # - [7]Enhanced Menu Inactivity Timeout, [8]Reminder Timer Banner Timeout, [9]Start Over Prompt Timeout,
244
+ # - [10]Dialog Timeout, [11]Alert Dialog Timeout, [12]Guide Timeout,
245
+ # - [13]Paused Session Timeout, [14]Enhanced Menu Prompt Timeout
246
+ def fetch_timeout_parameters
247
+ begin
248
+ selenium = _mas_login
249
+ return [] if selenium.nil?
250
+ timeout_parameters = []
251
+ _navigate_to_stb_settings(selenium)
252
+ loginfo2 'Fetching Timeout parameters'
253
+ selenium.wait_for_text 'Timeout Parameters'
254
+ (1..15).each{|i| timeout_parameters.push(selenium.get_text("//table[17]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
255
+ return timeout_parameters
256
+ ensure
257
+ _mas_logout(selenium) unless selenium.nil?
258
+ end
259
+ end
260
+
261
+ # Use it to fetch power save mode parameters from MAS.
262
+ # * *Args* :
263
+ # * *Returns* :
264
+ # - array of values in order:
265
+ # - [0]no_of_hours_of_inactivity_to_enter_low_power_state, [1]power_save_active, [2]display_to_user
266
+ def fetch_power_save_settings
267
+ begin
268
+ selenium = _mas_login
269
+ return [] if selenium.nil?
270
+ power_save_settings = []
271
+ _navigate_to_stb_settings(selenium)
272
+ loginfo2 'Fetching Power Save mode settings'
273
+ selenium.wait_for_text 'Power Save Mode'
274
+ (1..2).each{|i| power_save_settings.push(selenium.get_text("//table[12]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
275
+ selenium.click "//a[contains(@href, '/mystroui/editMsoSettings.do?groupName=Power Save Mode')]", :wait_for => :page
276
+ power_save_settings.push(selenium.is_checked("css=input[name=\"userCanChange(Power Save Active)\"]"))
277
+ return power_save_settings
278
+ ensure
279
+ _mas_logout(selenium) unless selenium.nil?
280
+ end
281
+ end
282
+
283
+ # Use it to fetch the HD Setup parameters from MAS.
284
+ # * *Args* :
285
+ # * *Returns* :
286
+ # - array of values in order:
287
+ # - [0]autohd_feature_enabled , [1]filter_hd_guide_data_for_non_hd_stbs , [2]picture_size , [3]aspect_ratio
288
+ # - [4]480i, [5]480p, [6]720p, [7]1080i, [8]autohd_autotune
289
+ def fetch_hd_setup_parameters
290
+ begin
291
+ selenium = _mas_login
292
+ return [] if selenium.nil?
293
+ hd_setup_parameters = []
294
+ _navigate_to_stb_settings(selenium)
295
+ loginfo2 'Fetch HD Setup parameters'
296
+ selenium.wait_for_text 'HD Setup'
297
+ (1..9).each{|i| hd_setup_parameters.push(selenium.get_text("//table[8]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
298
+ return hd_setup_parameters
299
+ ensure
300
+ _mas_logout(selenium) unless selenium.nil?
301
+ end
302
+ end
303
+
304
+ # Use it to reset purchase or parental control PIN of STB from MAS.
305
+ # * *Args* :
306
+ # - +pin_type+ -> purchase or parental
307
+ # - +pin+ -> new value of PIN
308
+ # * *Returns* :
309
+ # - true if PIN reset successfully
310
+ def mas_conductor_reset_pin(pin_type, pin)
311
+ if pin.length != 4 || !(/^([0-9][0-9][0-9][0-9])$/.match("#{pin}"))
312
+ loginfo2 "Invalid pin: #{pin} entered"
313
+ return false
314
+ end
315
+ pin_type = pin_type.strip.downcase
316
+ unless ((pin_type.casecmp('purchase')==0) || (pin_type.casecmp('parental')==0))
317
+ loginfo2 "Invalid pin type: #{pin_type} entered"
318
+ return false
319
+ end
320
+ begin
321
+ selenium = _mas_login
322
+ return false if selenium.nil?
323
+ mac_addr = fetch_stb_mac_address
324
+ return false unless _navigate_to_stb_messaging(selenium)
325
+ loginfo2 'Selecting Reset PIN'
326
+ selenium.wait_for_element "link=Reset PIN"
327
+ selenium.click "link=Reset PIN", :wait_for => :page
328
+ selenium.wait_for_element "dijit_form_Button_0"
329
+ selenium.type "//input[@name='pinInfo.editMacAddress']", "#{mac_addr}"
330
+ if pin_type.casecmp('parental')==0
331
+ loginfo2 'Selecting Parental Control PIN'
332
+ selenium.select("//select[@name='pinInfo.pinType']", "label=Parental Control PIN")
333
+ elsif pin_type.casecmp('purchase')==0
334
+ loginfo2 'Selecting Purchase PIN'
335
+ selenium.select("//select[@name='pinInfo.pinType']", "label=Purchase PIN")
336
+ end
337
+ loginfo2 "Reset PIN to #{pin}"
338
+ selenium.type "//input[@name='pinInfo.pin']", "#{pin}"
339
+ selenium.click "dijit_form_Button_0", :wait_for => :page
340
+ return _selenium_server_messaging_operation_succeeded?(selenium)
341
+ ensure
342
+ _mas_logout(selenium) unless selenium.nil?
343
+ end
344
+ end
345
+
346
+ # Use it to reboot STB from MAS.
347
+ # * *Returns* :
348
+ # - true if STB rebooted successfully
349
+ def mas_conductor_reboot_stb
350
+ begin
351
+ selenium = _mas_login
352
+ return false if selenium.nil?
353
+ mac_addr = fetch_stb_mac_address
354
+ return false unless _navigate_to_stb_messaging(selenium)
355
+ loginfo2 'Selecting Reboot Set-top'
356
+ selenium.wait_for_element "link=Reboot Set-top"
357
+ selenium.click "link=Reboot Set-top", :wait_for => :page
358
+ selenium.wait_for_element "dijit_form_Button_0"
359
+ selenium.type "id=macAddress", "#{mac_addr}"
360
+ selenium.click "dijit_form_Button_0", :wait_for => :page
361
+ return _selenium_server_messaging_operation_succeeded?(selenium)
362
+ ensure
363
+ _mas_logout(selenium) unless selenium.nil?
364
+ end
365
+ end
366
+
367
+ # Use it to reset client NVRAM of STB from MAS.
368
+ # * *Returns* :
369
+ # - true if Client NV RAM reset successfully
370
+ def mas_conductor_reset_client_nvram
371
+ begin
372
+ selenium = _mas_login
373
+ return false if selenium.nil?
374
+ mac_addr = fetch_stb_mac_address
375
+ return false unless _navigate_to_stb_messaging(selenium)
376
+ loginfo2 'Selecting Reset Client NVM'
377
+ selenium.wait_for_element "link=Reset Client NVM"
378
+ selenium.click "link=Reset Client NVM", :wait_for => :page
379
+ selenium.wait_for_element "dijit_form_Button_0"
380
+ selenium.type "//input[@name='data.editMacAddress']", "#{mac_addr}"
381
+ selenium.click "dijit_form_Button_0", :wait_for => :page
382
+ return _selenium_server_messaging_operation_succeeded?(selenium)
383
+ ensure
384
+ _mas_logout(selenium) unless selenium.nil?
385
+ end
386
+ end
387
+
388
+ # Use it to format HDD of STB from MAS.
389
+ # * *Returns* :
390
+ # - true if HDD formatted successfully
391
+ def mas_conductor_format_disk
392
+ begin
393
+ selenium = _mas_login
394
+ return false if selenium.nil?
395
+ mac_addr = fetch_stb_mac_address
396
+ return false unless _navigate_to_stb_messaging(selenium)
397
+ loginfo2 'Selecting Format Disk'
398
+ selenium.wait_for_element "link=Format Disk"
399
+ selenium.click "link=Format Disk", :wait_for => :page
400
+ selenium.wait_for_element "dijit_form_Button_0"
401
+ selenium.type "//input[@name='data.editMacAddress']", "#{mac_addr}"
402
+ selenium.click "dijit_form_Button_0", :wait_for => :page
403
+ return _selenium_server_messaging_operation_succeeded?(selenium)
404
+ ensure
405
+ _mas_logout(selenium) unless selenium.nil?
406
+ end
407
+ end
408
+
409
+ # Use it to clear client NVRAM of STB from MAS.
410
+ # * *Args* :
411
+ # - +clear_od_reservation+ -> if true, Clear associated OnDemand reservations
412
+ # * *Returns* :
413
+ # - true if Client NV RAM cleared successfully
414
+ def mas_conductor_clear_client_nvram(clear_od_reservation=false)
415
+ begin
416
+ selenium = _mas_login
417
+ return false if selenium.nil?
418
+ mac_addr = fetch_stb_mac_address
419
+ return false unless _navigate_to_stb_messaging(selenium)
420
+ loginfo2 'Selecting Clear Client NVM'
421
+ selenium.wait_for_element "link=Clear Client NVM"
422
+ selenium.click "link=Clear Client NVM", :wait_for => :page
423
+ selenium.wait_for_element "dijit_form_Button_0"
424
+ selenium.type "//input[@name='data.macAddress']", "#{mac_addr}"
425
+ if clear_od_reservation==true
426
+ loginfo2 'Clearing associated OnDemand reservations'
427
+ selenium.click("//input[@name='clearODReservations']")
428
+ end
429
+ selenium.click "dijit_form_Button_0", :wait_for => :page
430
+ return _selenium_server_messaging_operation_succeeded?(selenium)
431
+ ensure
432
+ _mas_logout(selenium) unless selenium.nil?
433
+ end
434
+ end
435
+
436
+ # Use it to factory reset STB from MAS.
437
+ # * *Returns* :
438
+ # - true if Factory reset successful
439
+ def mas_conductor_factory_reset
440
+ begin
441
+ selenium = _mas_login
442
+ return false if selenium.nil?
443
+ mac_addr = fetch_stb_mac_address
444
+ return false unless _navigate_to_stb_messaging(selenium)
445
+ loginfo2 'Selecting Factory Reset'
446
+ selenium.wait_for_element "link=Factory Reset"
447
+ selenium.click "link=Factory Reset", :wait_for => :page
448
+ selenium.wait_for_element "dijit_form_Button_0"
449
+ selenium.type "//input[@name='data.editMacAddress']", "#{mac_addr}"
450
+ selenium.click "dijit_form_Button_0", :wait_for => :page
451
+ return _selenium_server_messaging_operation_succeeded?(selenium)
452
+ ensure
453
+ _mas_logout(selenium) unless selenium.nil?
454
+ end
455
+ end
456
+
457
+ # Private method
458
+ def _selenium_server_messaging_operation_succeeded?(selenium)
459
+ unless selenium.is_element_present("css=h3")
460
+ loginfo2 'Unable to send server messaging command to STB'
461
+ return false
462
+ end
463
+ header = selenium.get_text("css=h3")
464
+ code = selenium.get_text("//code")
465
+ loginfo2 "#{header}: #{code}"
466
+ loginfo2 'Waiting for 1 minute'
467
+ sleep 1.min
468
+ return true
469
+ end
470
+
471
+ #Private method
472
+ def _verify_page(selenium, string)
473
+ loginfo2 "Verifying string '#{string}'"
474
+ 5.times do
475
+ return true if selenium.get_text("//html").include?(string)
476
+ sleep 10.sec
477
+ end
478
+ return false
479
+ end
480
+
481
+ # Use it to fetch OD channel cancellation window from MAS.
482
+ # * *Args* :
483
+ # - +channel_no+ -> OD channel number
484
+ # * *Returns* :
485
+ # - cancellation window in minues if setting read successfully, nil otherwise
486
+ def mas_od_service_cancellation_window(channel_no)
487
+ begin
488
+ selenium = _mas_login
489
+ return nil if selenium.nil?
490
+ loginfo2 'Navigating to Navigator'
491
+ selenium.wait_for_element "dijit_form_DropDownButton_0"
492
+ selenium.click "dijit_form_DropDownButton_0"
493
+ loginfo2 'Navigating to Services > On Demand Services'
494
+ selenium.click "//tr[@id='dijit_MenuItem_2']/td[2]", :wait_for => :page
495
+ selenium.select_frame "iframemdn"
496
+ selenium.wait_for_element "link=Generate OD catalog"
497
+ selenium.click "link=View on single page", :wait_for => :page if selenium.is_text_present('View on single page')
498
+ service_name = guide_screen_channel_info(channel_no)[:channel_name_full]
499
+ loginfo2 "Opening service: #{service_name}"
500
+ return nil unless _selenium_open_od_service(channel_no,selenium)
501
+ cancellation_window = selenium.get_text("//tr[42]/td").split(" ")[0].to_s
502
+ loginfo2 "Cancellation window: [#{cancellation_window}] minutes"
503
+ return cancellation_window.to_i
504
+ rescue StandardError => e
505
+ loginfo2 e.message
506
+ loginfo2 'Unable to fetch cancellation window from MAS'
507
+ return nil
508
+ ensure
509
+ _mas_logout(selenium) unless selenium.nil?
510
+ end
511
+ end
512
+
513
+ # Private method
514
+ def _selenium_open_od_service(channel_no,selenium)
515
+ service_link = guide_screen_channel_info(channel_no)[:service_name].delete(' ')
516
+ begin
517
+ selenium.click "link=#{service_link}", :wait_for => :page
518
+ rescue
519
+ loginfo2 "Unable to open link: #{service_link}"
520
+ return false
521
+ end
522
+ return true
523
+ end
524
+
525
+ # Use it to verify STB OCAP VAF targets page fields.
526
+ # * *Returns* :
527
+ # - true if verified successfully
528
+ def mas_conductor_verify_vaf_targets_page
529
+ begin
530
+ selenium = _mas_login
531
+ return false if selenium.nil?
532
+ return false unless _navigate_to_stb_ocap_vaf_entries(selenium)
533
+ count=0
534
+ vaf_target_columns=[]
535
+ expected_columns=['Name','Target Type','Target Pri']
536
+ only_default = true
537
+ (1..3).each{|i| vaf_target_columns.push(selenium.get_text("//div[@id='dataTable']/div/div/div/div/table/tbody/tr/th[#{i}]"))}
538
+ if selenium.is_element_present("//div[@id='dataTable-page-0']/div[2]/table/tbody/tr/td[4]")
539
+ (1..2).each{|row| (4..5).each{|i| vaf_target_columns.push(selenium.get_text("//div[@id='dataTable-page-0']/div[#{row}]/table/tbody/tr/td[#{i}]"))}}
540
+ expected_columns=['Name','Target Type','Target Pri','update | copy','delete']
541
+ only_default = false
542
+ end
543
+ loginfo2 'Verify VAF Target Table Columns'
544
+ expected_columns.each{|clm|
545
+ if vaf_target_columns.include? clm
546
+ loginfo2 "Column: [#{clm}] verified"
547
+ else
548
+ loginfo2 "Column: [#{clm}] not verified"
549
+ return false
550
+ end
551
+ }
552
+ vaf_targets=[]
553
+ vaf_targets=selenium.get_select_options("id=TargetTypeFilter")
554
+ if only_default
555
+ expected_columns=['(any)','DEFAULT']
556
+ else
557
+ expected_columns=['(any)','DEFAULT','HOST_ATTRIBUTES','MAC_ADDR']
558
+ end
559
+ loginfo2 'Verify VAF Target Filters and Actions'
560
+ expected_columns.each{|clm|
561
+ if vaf_targets.include? clm
562
+ loginfo2 "Option: [#{clm}] verified"
563
+ else
564
+ if ((clm == 'HOST_ATTRIBUTES') or (clm == 'MAC_ADDR'))
565
+ loginfo2 "Option: [#{clm}] not verified as no target for [#{clm}] exists"
566
+ else
567
+ loginfo2 "Option: [#{clm}] not verified"
568
+ return false
569
+ end
570
+ end
571
+ }
572
+
573
+ loginfo2 'All fields on VAF Target page verified'
574
+ return true
575
+ ensure
576
+ _mas_logout(selenium) unless selenium.nil?
577
+ end
578
+ end
579
+
580
+ # Private method
581
+ # * *Args* :
582
+ # - +target_name+ -> VAF target name
583
+ # - +target_type+ -> mac_addr / host (MAC_ADDR / HOST_ATTRIBUTES)
584
+ # - +target_priority+ -> priority (integer)
585
+ # - +target+ -> mac_addr / host targets (array of mac address for mac_addr / string for host)
586
+ # * *Returns* :
587
+ # - true if new VAF target created successfully
588
+ def _mas_conductor_create_new_vaf_target(target_name,target_type,target,target_priority)
589
+ begin
590
+ selenium = _mas_login
591
+ return false if selenium.nil?
592
+ return false unless _navigate_to_stb_ocap_vaf_entries(selenium)
593
+ loginfo2 "Click create new target"
594
+ selenium.wait_for_element "link=Create New Target"
595
+ selenium.click "link=Create New Target", :wait_for => :page
596
+ loginfo2 "Enter target name: [#{target_name}]"
597
+ selenium.type "id=targetName", target_name
598
+ selenium.select("id=editTargetType", "label=MAC_ADDR") if target_type.strip.casecmp('mac_addr')==0
599
+ selenium.select("id=editTargetType", "label=HOST_ATTRIBUTES") if target_type.strip.casecmp('host')==0
600
+ if target_priority == ""
601
+ loginfo2 "Leaving target priority as default"
602
+ else
603
+ loginfo2 "Enter target priority: [#{target_priority}]"
604
+ selenium.type "id=targetPriority", target_priority
605
+ end
606
+ selenium.type "id=bytesAsString", target
607
+ loginfo2 "Save target"
608
+ selenium.click "id=saveButton", :wait_for => :page
609
+ return true
610
+ ensure
611
+ _mas_logout(selenium) unless selenium.nil?
612
+ end
613
+ return false
614
+ end
615
+
616
+ # Use it to verify a VAF target.
617
+ # * *Args* :
618
+ # - +target_name+ -> VAF target name
619
+ # - +target_type+ -> MAC_ADDR / HOST_ATTRIBUTES
620
+ # - +target_priority+ -> priority (integer)
621
+ # - +target+ -> mac_addr / host targets (array of mac address for mac_addr / string for host)
622
+ # * *Returns* :
623
+ # - true if VAF target verified successfully
624
+ def mas_conductor_verify_vaf_target(target_name,target_type,target,target_priority="")
625
+ begin
626
+ selenium = _mas_login
627
+ return nil if selenium.nil?
628
+ return false unless _navigate_to_stb_ocap_vaf_entries(selenium)
629
+ begin
630
+ (1..100).each{|i|
631
+ if selenium.get_text("//div[@id='dataTable-page-0']/div[#{i}]/table/tbody/tr/td[1]").strip == target_name.strip
632
+ mas_type = selenium.get_text("//div[@id='dataTable-page-0']/div[#{i}]/table/tbody/tr/td[2]")
633
+ mas_priority = selenium.get_text("//div[@id='dataTable-page-0']/div[#{i}]/table/tbody/tr/td[3]")
634
+ loginfo2 "Verify Target type"
635
+ unless mas_type.strip.casecmp(target_type.strip)==0
636
+ loginfo2 "Target type not: [#{mas_type}] for [#{target_name}]"
637
+ return false
638
+ end
639
+ loginfo2 "Target type: [#{mas_type}] verified"
640
+ if target_priority != ""
641
+ loginfo2 "Verify Priority"
642
+ unless mas_priority.strip.casecmp(target_priority.to_s.strip)==0
643
+ loginfo2 "Priority not: [#{mas_priority}] for [#{target_name}]"
644
+ return false
645
+ end
646
+ loginfo2 "Target priority: [#{mas_priority}] verified"
647
+ else
648
+ loginfo2 "Default Target priority: [#{mas_priority}]"
649
+ end
650
+ selenium.click "//div[@id='dataTable-page-0']/div[#{i}]/table/tbody/tr/td[4]/a", :wait_for => :page
651
+ break
652
+ end
653
+ }
654
+ rescue StandardError => e
655
+ loginfo2 e.message
656
+ loginfo2 "Unable to verify VAF Filter: [#{target_name}]"
657
+ return false
658
+ end
659
+ mas_target = selenium.get_text("id=bytesAsString").delete(":")
660
+ if target_type.strip.casecmp('MAC_ADDR')==0
661
+ loginfo2 "Verify Target MAC Addresses"
662
+ target.each{|mac|
663
+ unless mas_target.downcase.delete(":").include?(mac.downcase.delete(":"))
664
+ loginfo2 "MAC Adress: [#{mac}] not found in target of [#{target_name}]"
665
+ return false
666
+ end
667
+ }
668
+ loginfo2 "Target MAC addresses verified: [#{target.join('; ')}]"
669
+ else
670
+ unless mas_target.include? target
671
+ loginfo2 "Host attributes: [#{target}] not found in target of [#{target_name}]"
672
+ return false
673
+ end
674
+ loginfo2 "Target Host attributes verified: [#{target}]"
675
+ end
676
+ return true
677
+ ensure
678
+ _mas_logout(selenium) unless selenium.nil?
679
+ end
680
+ end
681
+
682
+ # Use it to create a new VAF target for target type: MAC_ADDR
683
+ # * *Args* :
684
+ # - +target_name+ -> VAF target name
685
+ # - +target_priority+ -> priority (integer)
686
+ # - +target+ -> array of mac address
687
+ # * *Returns* :
688
+ # - true if new VAF target for target type: MAC_ADDR created successfully
689
+ def mas_conductor_create_vaf_target_for_mac_address(target_name,target,target_priority="")
690
+ if target.class == Array
691
+ string=''
692
+ target.each{|mac| string="#{string}\n#{mac}"}
693
+ else
694
+ loginfo2 'Invalid target parameter'
695
+ return false
696
+ end
697
+ return _mas_conductor_create_new_vaf_target(target_name,'mac_addr',string,target_priority)
698
+ end
699
+
700
+ # Use it to create a new VAF target for target type: HOST_ATTRIBUTES
701
+ # * *Args* :
702
+ # - +target_name+ -> VAF target name
703
+ # - +target_priority+ -> priority (integer)
704
+ # - +target+ -> target string
705
+ # * *Returns* :
706
+ # - true if new VAF target for target type: HOST_ATTRIBUTES created successfully
707
+ def mas_conductor_create_vaf_target_for_host_attributes(target_name,target,target_priority="")
708
+ return _mas_conductor_create_new_vaf_target(target_name,'host',target,target_priority)
709
+ end
710
+
711
+ # Use it to delete a VAF target.
712
+ # * *Args* :
713
+ # - +target_name+ -> VAF target name
714
+ # * *Returns* :
715
+ # - true if new VAF target deleted successfully
716
+ def mas_conductor_delete_vaf_target(target_name)
717
+ begin
718
+ selenium = _mas_login
719
+ return false if selenium.nil?
720
+ return false unless _navigate_to_stb_ocap_vaf_entries(selenium)
721
+ begin
722
+ loginfo2 "Delete VAF target: #{target_name}"
723
+ (1..100).each{|i|
724
+ if selenium.get_text("//div[@id='dataTable-page-0']/div[#{i}]/table/tbody/tr/td[1]").strip == target_name.strip
725
+ loginfo2 "Click delete"
726
+ selenium.click("//div[@id='dataTable-page-0']/div[#{i}]/table/tbody/tr/td[5]/a")
727
+ break
728
+ end}
729
+ rescue
730
+ loginfo2 "VAF Filter: #{target_name} not found"
731
+ return false
732
+ end
733
+ if selenium.is_confirmation_present
734
+ loginfo2 selenium.get_confirmation
735
+ if selenium.is_alert_present
736
+ loginfo2 selenium.get_alert
737
+ end
738
+ end
739
+ loginfo2 "VAF Filter: #{target_name} deleted"
740
+ return true
741
+ ensure
742
+ _mas_logout(selenium) unless selenium.nil?
743
+ end
744
+ end
745
+
746
+ #Private
747
+ #Use this method to navigate to home page
748
+ def _navigate_to_home_page(selenium)
749
+ selenium.select_frame "relative=up"
750
+ selenium.click "dijit_form_Button_2", :wait_for => :page
751
+ return true
752
+ end
753
+
754
+ #Private
755
+ #Use this method to navigate to stb settings page
756
+ def _navigate_to_stb_settings(selenium)
757
+ loginfo2 'Navigating to STB'
758
+ selenium.wait_for_element "dijit_form_DropDownButton_3"
759
+ selenium.click "dijit_form_DropDownButton_3"
760
+ _selenium_wait_for_menu_to_load
761
+ loginfo2 'Navigating to STB Settings'
762
+ selenium.click "//tr[@id='dijit_MenuItem_35']/td[2]", :wait_for => :page
763
+ selenium.select_frame "iframemdn"
764
+ return true
765
+ end
766
+
767
+ #Private
768
+ #Use this method to navigate to stb settings page
769
+ def _navigate_to_search_service(selenium)
770
+ loginfo2 'Navigating to Navigator'
771
+ selenium.wait_for_element "dijit_form_DropDownButton_0"
772
+ selenium.wait_for_element "dijit_form_DropDownButton_0"
773
+ selenium.click "dijit_form_DropDownButton_0"
774
+ _selenium_wait_for_menu_to_load
775
+ loginfo2 'Navigating Services > Search Services'
776
+ selenium.click "//tr[@id='dijit_MenuItem_0']/td[2]", :wait_for => :page
777
+ selenium.select_frame "iframemdn"
778
+ return true
779
+ end
780
+
781
+ #Private
782
+ #Use this method to navigate to stb ocap vaf entries page
783
+ def _navigate_to_stb_ocap_vaf_entries(selenium)
784
+ loginfo2 'Navigating to STB'
785
+ selenium.wait_for_element "dijit_form_DropDownButton_3"
786
+ selenium.click "dijit_form_DropDownButton_3"
787
+ _selenium_wait_for_menu_to_load
788
+ loginfo2 'Navigating to OCAP > VAF Targets'
789
+ selenium.click "//tr[@id='dijit_MenuItem_30']/td[2]", :wait_for => :page
790
+ selenium.select_frame "iframemdn"
791
+ return true
792
+ end
793
+
794
+ #Private method
795
+ #Use this method to navigate to stb > stb messaging
796
+ def _navigate_to_stb_messaging(selenium)
797
+ loginfo2 'Navigating to STB'
798
+ selenium.wait_for_element "dijit_form_DropDownButton_3"
799
+ selenium.click "dijit_form_DropDownButton_3"
800
+ _selenium_wait_for_menu_to_load
801
+ loginfo2 'Navigating to to STB Messaging'
802
+ selenium.click "//tr[@id='dijit_MenuItem_37']/td[2]", :wait_for => :page
803
+ selenium.select_frame "iframemdn"
804
+ return true
805
+ end
806
+
807
+ # Use it to verify billing id's are same on all stb's for a whole house purchase on MAS.
808
+ # * *Args* :
809
+ # - +asset+ -> last purchased OD asset
810
+ # - +macs+ -> array of mac addresses of stb's
811
+ # * *Returns* :
812
+ # - true if billing ids of all stbs are same, false otherwise
813
+ def mas_verify_same_billing_id_for_whole_house_purchase?(asset,macs)
814
+ begin
815
+ selenium = _mas_login
816
+ return false if selenium.nil?
817
+ loginfo2 'Navigating to VOD'
818
+ selenium.wait_for_element "dijit_form_DropDownButton_4"
819
+ selenium.click "dijit_form_DropDownButton_4"
820
+ loginfo2 'Navigating to Purchases'
821
+ selenium.click "//tr[@id='dijit_MenuItem_45']/td[2]", :wait_for => :page
822
+ selenium.select_frame "iframemdn"
823
+ selenium.wait_for_element "dijit_form_Button_0"
824
+ billing=[]
825
+ macs.each{|mac|
826
+ loginfo2 "Filtering purchases of: [#{mac}]"
827
+ selenium.type '//input[@id="macAddress"]', mac.strip.to_s
828
+ selenium.click "dijit_form_Button_0"
829
+ _selenium_wait_for_menu_to_load
830
+ last_purchase = selenium.get_text("//div[@id='thePurchases-page-0']/div/table/tbody/tr/td[4]").strip
831
+ billing_id = selenium.get_text("//div[@id='thePurchases-page-0']/div/table/tbody/tr/td[6]").strip
832
+ billing.push(billing_id) unless billing.include?(billing_id)
833
+ loginfo2 "Last purchase of: [#{mac}] is: [#{last_purchase}] with Billing ID: [#{billing_id}]"
834
+ return false unless last_purchase.casecmp(asset.strip)==0
835
+ }
836
+ unless billing.length == 1; loginfo2 "All billing IDs are not same"; return false; end
837
+ loginfo2 "All purchases have same billing ID: [#{billing[0]}]"
838
+ return true
839
+ rescue StandardError => e
840
+ loginfo2 e.message
841
+ loginfo2 'Unable to verify Billing IDs on MAS'
842
+ return false
843
+ ensure
844
+ _mas_logout(selenium) unless selenium.nil?
845
+ end
846
+ end
847
+
848
+ # Use it to verify if all dvr parameters are modifiable
849
+ # * *Args* :
850
+ # * *Returns* :
851
+ # - true if all fields are modifiable, else false
852
+ def mas_conductor_verify_dvr_parameters_modifiable?
853
+ begin
854
+ selenium = _mas_login
855
+ return false if selenium.nil?
856
+ _navigate_to_stb_settings(selenium)
857
+ loginfo2 'Fetch DVR parameters'
858
+ (1..18).each{|i|
859
+ field_name = selenium.get_text("//table[6]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[1]").strip
860
+ loginfo2 "Verifying if field : [#{field_name}] is modifiable"
861
+ unless selenium.is_element_present("//table[6]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[3]//img[@src='/mystroui/images/GoodCheck2.gif']") || selenium.is_element_present("//table[6]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[4]//img[@src='/mystroui/images/GoodCheck2.gif']")
862
+ loginfo2 "Field [#{field_name}] is not modifiable"
863
+ return false
864
+ end
865
+ }
866
+ loginfo2 'Successfully verified all dvr parameters are modifiable'
867
+ return true
868
+ ensure
869
+ _mas_logout(selenium) unless selenium.nil?
870
+ end
871
+ end
872
+
873
+ # Use it to get the value of Start Over prompt Delay on MAS.
874
+ # * *Returns* :
875
+ # - delay (min), else nil
876
+ def mas_conductor_get_start_over_prompt_delay
877
+ begin
878
+ selenium = _mas_login
879
+ return nil if selenium.nil?
880
+ _navigate_to_stb_settings(selenium)
881
+ delay_mas = selenium.get_text "//table[10]/tbody/tr[2]/td/table/tbody/tr[6]/td[2]"
882
+ return delay_mas
883
+ ensure
884
+ _mas_logout(selenium) unless selenium.nil?
885
+ end
886
+ end
887
+
888
+ # Use it to get the value of Filter HD guide data for non-HD STBs on MAS.
889
+ # * *Returns* :
890
+ # - true - if enable, false otherwise
891
+ def mas_conductor_get_filter_HD_guide_data_for_non_HD_stbs
892
+ begin
893
+ selenium = _mas_login
894
+ return false if selenium.nil?
895
+ _navigate_to_stb_settings(selenium)
896
+ enable_disable = selenium.get_text "//table[8]/tbody/tr[2]/td/table/tbody/tr[2]/td[2]"
897
+ return enable_disable.casecmp('true')==0
898
+ ensure
899
+ _mas_logout(selenium) unless selenium.nil?
900
+ end
901
+ end
902
+
903
+ # Use it fetch the existing Splits for a given region on MAS.
904
+ # * *Args* :
905
+ # - +region_name+ -> Region Name for which splits are required
906
+ # * *Returns* :
907
+ # - existing splits if present, else return nil
908
+ def mas_return_existing_splits region_name
909
+ existing_splits = []
910
+ begin
911
+ selenium = _mas_login
912
+ return false if selenium.nil?
913
+ loginfo2 'Navigating to Split Services and Blackout'
914
+ selenium.wait_for_element "id=dijit_form_DropDownButton_0"
915
+ selenium.click "id=dijit_form_DropDownButton_0"
916
+ loginfo2 'Navigating to Regions/Lineups > Split Services and Blackout'
917
+ selenium.click "css=#dijit_MenuItem_8 > td.dijitReset.dijitMenuItemLabel", :wait_for => :page
918
+ selenium.select_frame "iframemdn"
919
+ selenium.wait_for_element "link=Create Daily Split"
920
+
921
+ max_row_table = 50 # Max no. of splits
922
+ max_col_table = 5
923
+
924
+ max_row_table.times do |iRow|
925
+ next if iRow==0
926
+ temp = []
927
+ if(region_name==selenium.get_table("//tr[2]/td/table.#{iRow}.#{5}"))
928
+ max_col_table.times do |jCol|
929
+ puts "iRow= #{iRow} jCol= #{jCol}"
930
+ text = selenium.get_table("//tr[2]/td/table.#{iRow}.#{jCol}")
931
+ temp.push(text)
932
+ end
933
+ existing_splits<<temp
934
+ end
935
+ end
936
+ rescue StandardError => e
937
+ loginfo2 e.message
938
+ if existing_splits==nil
939
+ loginfo2 "Failed to find the splits for given region: #{region_name}"
940
+ return nil
941
+ end
942
+ ensure
943
+ _mas_logout(selenium) unless selenium.nil?
944
+ end
945
+ return existing_splits
946
+ end
947
+
948
+ #Use it to fetch VCR controls for assets
949
+ # * *Args* :
950
+ # - +assets+ -> Array/string of mystro service names
951
+ # * *Returns* :
952
+ # - hash with format {:<mystro service name>=>{:rewind=>true/false, :pause=>true/false, :fast_forward=>true/false}}, where true means enabled
953
+ def mas_conductor_vcr_control_settings_for_services assets
954
+ assets = [assets] unless assets.class==Array
955
+ result_hash = {}
956
+ begin
957
+ selenium =_mas_login
958
+ return false if selenium.nil?
959
+ loginfo2 'Fetching data for all services'
960
+ selenium.open('/mystroui/rta/retrieveServicesAJAX.do')
961
+ sleep 10.sec
962
+ text = selenium.get_body_text
963
+ regx = Regexp.new(/(\[)(.*)(\])/)
964
+ text = regx.match(text)[0]
965
+ text.gsub!(':',',')
966
+ all_assets = eval(text) # Convert to Hash
967
+ all_assets = all_assets.each{|hsh|
968
+ if assets.include?(hsh['mystroServiceName'])
969
+ loginfo2 "Fetching VCR control settings for service '#{hsh['mystroServiceName']}'"
970
+ selenium.open("/mystroui/rta/retrieveServiceSettings.do?serviceId=#{hsh['id']}")
971
+ sleep 5.sec
972
+ result_hash[hsh['mystroServiceName'].to_sym] = {
973
+ :rewind => selenium.is_checked("//input[@name='isVCRControlRW']"),
974
+ :pause => selenium.is_checked("//input[@name='isVCRControlPause']"),
975
+ :fast_forward => selenium.is_checked("//input[@name='isVCRControlFF']"),
976
+ }
977
+ end
978
+ }
979
+ loginfo2 'Navigating back to main page'
980
+ selenium.open("/mystroui/index.do")
981
+ selenium.wait_for_element "link=Logout"
982
+ rescue StandardError => e
983
+ loginfo2 "Failed to fetch VCR control settings: #{e.message}"
984
+ ensure
985
+ _mas_logout(selenium) unless selenium.nil?
986
+ end
987
+ return result_hash
988
+ end
989
+
990
+ # Use it to fetch all audio/language settings
991
+ # * *Returns* :
992
+ # - hash containing settings (e.g. {:stb_display_language=>"English", :cc_on_off=>"On w/Mute", :cc_format_source=>"Set By Program", :cc_digital_source=>"CC1",
993
+ # :cc_analog_source=>"CC1", :cc_background_style=>"Solid", :cc_background_color=>"Black", :cc_text_style=>"Solid",
994
+ # :cc_text_size=>"Standard", :cc_text_color=>"White", :cc_text_font=>"Courier", :audio_range=>"Narrow",
995
+ # :audio_output=>"Variable", :audio_coding=>"Dolby", :sap_on_off=>"On", :sap_audio_language_code=>"English",
996
+ # :audio_volume=>"10"})
997
+ def mas_conductor_fetch_audio_language_settings
998
+ settings = {}
999
+ begin
1000
+ selenium = _mas_login
1001
+ return false if selenium.nil?
1002
+ _navigate_to_stb_settings(selenium)
1003
+ i=0
1004
+ while selenium.is_element_present("//div[2]/div/div/table[1]/tbody/tr[2]/td/table[1]/tbody/tr[#{i+=1}]/td")
1005
+ loginfo2 "Fetching value for '#{selenium.get_text("//div[2]/div/div/table/tbody/tr[2]/td/table/tbody/tr[#{i}]/td")}'"
1006
+ key = selenium.get_text("//div[2]/div/div/table/tbody/tr[2]/td/table/tbody/tr[#{i}]/td").strip.downcase.gsub(/\W/,'_')
1007
+ value = selenium.get_text("//div[2]/div/div/table/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]")
1008
+ settings[key.to_sym] = value
1009
+ end
1010
+ rescue StandardError => e
1011
+ logdebug "Error while fetching Audio/Language settings : #{e.message}"
1012
+ ensure
1013
+ _mas_logout(selenium) unless selenium.nil?
1014
+ end
1015
+ return settings
1016
+ end
1017
+
1018
+ # Use it to verify EID for authorization of Start Over on MAS.
1019
+ # * *Args* :
1020
+ # - +eid_start_over+ -> The EID for authorization of Start Over to be verified (integer)
1021
+ # * *Returns* :
1022
+ # - true if verified, else false
1023
+ def mas_conductor_verify_authorization_eid_start_over eid_start_over
1024
+ begin
1025
+ selenium = _mas_login
1026
+ return false if selenium.nil?
1027
+ _navigate_to_stb_settings(selenium)
1028
+
1029
+ loginfo2 'Reading EID for authorization of Start Over'
1030
+ eid_start_over_text = selenium.get_text"//table[14]/tbody/tr[2]/td/table/tbody/tr[4]/td[2]"
1031
+
1032
+ result = (eid_start_over==eid_start_over_text.to_i)
1033
+ if result==false
1034
+ loginfo2 "EID for authorization of Start Over does not match the given value: #{eid_start_over}"
1035
+ end
1036
+ return result
1037
+ rescue StandardError => e
1038
+ logdebug "Error while reading EID for authorization of Start Over: #{e.message}"
1039
+ return false
1040
+ ensure
1041
+ _mas_logout(selenium) unless selenium.nil?
1042
+ end
1043
+ end
1044
+
1045
+ #Use it to get Entitlement id for start over from search services
1046
+ # * *Args* :
1047
+ # - +service+ -> Start over enabled service
1048
+ # * *Returns* :
1049
+ # - eid if succesfully fetched, else false
1050
+ def mas_conductor_start_over_eid_from_search_services service
1051
+ eid = 0
1052
+ begin
1053
+ selenium = _mas_login
1054
+ return false if selenium.nil?
1055
+ _navigate_to_search_service(selenium)
1056
+ loginfo2 "Searching Given Service: #{service}"
1057
+ selenium.type "id=searchBox", service
1058
+ selenium.click "id=dijit_form_Button_0"
1059
+ sleep 20.sec
1060
+ loginfo2 'Navigating to edit'
1061
+ selenium.click "//a[@href = '/mystroui/editWatchTvService.do?pslng.app=MDNWatchTvApplication&pslng.svc=#{service}&returnTo=searchSvcs&pslng.pky=searchSvcs']", :wait_for => :page
1062
+ sleep 15.sec
1063
+ eid = selenium.get_selected_value "name=bean.saSOEID"
1064
+ loginfo2 "EID : #{eid}"
1065
+ return eid
1066
+ rescue StandardError => e
1067
+ logdebug e.message
1068
+ loginfo2 "Failed to fetch eid for start over"
1069
+ return false
1070
+ ensure
1071
+ _mas_logout(selenium) unless selenium.nil?
1072
+ end
1073
+ end
1074
+
1075
+ # Use it to read the paused session timeout
1076
+ # * *Returns* :
1077
+ # - paused_session_timeout if successfully read else nil
1078
+ def mas_conductor_get_pause_session_timeout
1079
+ begin
1080
+ selenium = _mas_login
1081
+ return false if selenium.nil?
1082
+ return false unless _navigate_to_stb_settings(selenium)
1083
+
1084
+ loginfo2 "Reading pause session timeout from MAS"
1085
+ paused_session_timeout = selenium.get_text "//table[17]/tbody/tr[2]/td/table/tbody/tr[14]/td[2]"
1086
+ return paused_session_timeout
1087
+
1088
+ rescue StandardError => e
1089
+ logdebug "Error while reading pause session timeout from MAS: #{e.message}"
1090
+ return nil
1091
+ ensure
1092
+ _mas_logout(selenium) unless selenium.nil?
1093
+ end
1094
+ end
1095
+
1096
+ # Use it to fetch trickmodes for lookback
1097
+ # * *Returns* :
1098
+ # - hash with format {:rewind=>true/false, :pause=>true/false, :fast_forward=>true/false}, where true means enabled
1099
+ def mas_conductor_fetch_trickmodes_for_lookback
1100
+ begin
1101
+ selenium = _mas_login
1102
+ return nil if selenium.nil?
1103
+ _navigate_to_search_service(selenium)
1104
+ loginfo2 "Searching RTA service"
1105
+ selenium.type "id=searchBox", 'RTA'
1106
+ selenium.click "id=dijit_form_Button_0"
1107
+ selenium.wait_for_element("//*[@href='/mystroui/editOdService.do?pslng.app=MDNOnDemandApplication&pslng.svc=RTA&returnTo=searchSvcs&pslng.pky=searchSvcs']") # Sleep to complete search
1108
+ loginfo2 "Navigating to edit for RTA service"
1109
+ selenium.click "//*[@href='/mystroui/editOdService.do?pslng.app=MDNOnDemandApplication&pslng.svc=RTA&returnTo=searchSvcs&pslng.pky=searchSvcs']", :wait_for=>:page
1110
+ loginfo2 "Fetching values for trickmodes"
1111
+ result_hash = {
1112
+ :pause=> !selenium.is_checked("//input[@id='trickModeOffset-PAUSE_DISABLED']"),
1113
+ :rewind => !selenium.is_checked("//input[@id='trickModeOffset-REWIND_DISABLED']"),
1114
+ :fast_forward => !selenium.is_checked("//input[@id='trickModeOffset-FAST_FORWARD_DISABLED']"),
1115
+ }
1116
+ return result_hash
1117
+ rescue StandardError => e
1118
+ logdebug "Error while fetching trickmodes for lookback: #{e.message}"
1119
+ return nil
1120
+ ensure
1121
+ _mas_logout(selenium) unless selenium.nil?
1122
+ end
1123
+ end
1124
+
1125
+ # Private method
1126
+ # Use it to fetch the STB settings from MAS
1127
+ # * *Returns* :
1128
+ # - stb settings hash
1129
+ def _mas_conductor_fetch_stb_settings
1130
+ begin
1131
+ selenium = _mas_login
1132
+ return [] if selenium.nil?
1133
+ _navigate_to_stb_settings(selenium)
1134
+ loginfo2 'Fetching Misc parameters'
1135
+ selenium.wait_for_text 'Misc'
1136
+
1137
+ misc_settings = {}
1138
+
1139
+ 30.times do |i| # settings table
1140
+ misc_settings_group_id = i + 1
1141
+ break unless selenium.is_element_present("//body/div[2]/div/div/table[#{misc_settings_group_id}]")
1142
+ group_name = selenium.get_text("//body/div[2]/div/div/table[#{misc_settings_group_id}]/tbody/tr/td/table/tbody/tr/td").downcase.gsub(/[^0-9a-z]/, '')
1143
+ misc_settings[group_name] = {}
1144
+ 50.times do |j| # settings row
1145
+ settings_id = j + 1
1146
+ break unless selenium.is_element_present("//body/div[2]/div/div/table[#{misc_settings_group_id}]/tbody/tr[2]/td/table/tbody/tr[#{settings_id}]")
1147
+ setting_name = selenium.get_text("//body/div[2]/div/div/table[#{misc_settings_group_id}]/tbody/tr[2]/td/table/tbody/tr[#{settings_id}]/td[1]").downcase.gsub(/[^0-9a-z]/, '')
1148
+ setting_value = selenium.get_text("//body/div[2]/div/div/table[#{misc_settings_group_id}]/tbody/tr[2]/td/table/tbody/tr[#{settings_id}]/td[2]")
1149
+
1150
+ misc_settings[group_name][setting_name] = setting_value
1151
+ end
1152
+ end
1153
+
1154
+ return misc_settings
1155
+ ensure
1156
+ _mas_logout(selenium) unless selenium.nil?
1157
+ end
1158
+ end
1159
+
1160
+ # Use it to fetch the Misc parameters from MAS.
1161
+ # * *Args* :
1162
+ # * *Returns* :
1163
+ # - array of values in order:
1164
+ # - [0]Find Shows Details Delay (seconds), [1]Screen Saver Timeout {0 to disable} (minutes), [2]OD jump value (minutes),
1165
+ # - [3]EAS message position, [4]Power On On any key press, [5]Enhanced Menu /Start Over delay (minutes), [6]On Demand Session Retry,
1166
+ # - [7]OD Reservation Catalog Request Delay (seconds),[8]Graphics Transparency, [9]Enable EBIF apps
1167
+ def mas_conductor_fetch_misc_parameters
1168
+ begin
1169
+ selenium = _mas_login
1170
+ return [] if selenium.nil?
1171
+ misc_parameters = []
1172
+ _navigate_to_stb_settings(selenium)
1173
+ loginfo2 'Fetching Misc parameters'
1174
+ selenium.wait_for_text 'Misc'
1175
+ 10.times do |i|
1176
+ misc_parameters.push(selenium.get_text("//table[10]/tbody/tr[2]/td/table/tbody/tr[#{i+1}]/td[2]"))
1177
+ end
1178
+ return misc_parameters
1179
+ rescue StandardError => e
1180
+ logdebug "Error while fetching misc parameter from mas conductor: #{e.message}"
1181
+ return []
1182
+ ensure
1183
+ _mas_logout(selenium) unless selenium.nil?
1184
+ end
1185
+ end
1186
+
1187
+ # Use it to get od asset id for asset on a showcase channel
1188
+ # * *Args* :
1189
+ # - +service_name+ -> Service name of showcase channel
1190
+ # * *Returns* :
1191
+ # - OD asset id if succesfully fetched, else nil
1192
+ def mas_conductor_fetch_asset_id_for_showcase service_name
1193
+ begin
1194
+ selenium = _mas_login
1195
+ return nil if selenium.nil?
1196
+ loginfo2 'Navigating to VOD'
1197
+ selenium.wait_for_element "dijit_form_DropDownButton_4"
1198
+ selenium.click "dijit_form_DropDownButton_4"
1199
+ _selenium_wait_for_menu_to_load
1200
+ loginfo2 'Navigating to On Demand Services'
1201
+ selenium.click "//tr[@id='dijit_MenuItem_39']/td[2]", :wait_for => :page
1202
+ selenium.wait_for_text 'Showcase'
1203
+ selenium.select_frame "iframemdn"
1204
+ selenium.click "link=View on single page", :wait_for => :page if selenium.is_text_present('View on single page')
1205
+ loginfo2 "Navigating to service #{service_name}"
1206
+ selenium.click "link=#{service_name}", :wait_for => :page
1207
+ selenium.wait_for_text 'Asset'
1208
+ loginfo2 "Fetching Asset id"
1209
+ 110.times do |i|
1210
+ field_name = selenium.get_text("//body/div[2]/div/table/tbody/tr[#{((i+1))}]/td")
1211
+ next unless field_name.eql?('Asset')
1212
+ value = selenium.get_text("//body/div[2]/div/table/tbody/tr[#{((i+1)+1)}]/td")
1213
+ return /\((\w+)\)/.match(value)[1].to_i
1214
+ end
1215
+ loginfo2 "OD Asset Id value not found"
1216
+ return nil
1217
+ rescue StandardError => e
1218
+ logdebug "Error while fetching od asset id from mas conductor: #{e.message}"
1219
+ return nil
1220
+ ensure
1221
+ _mas_logout(selenium) unless selenium.nil?
1222
+ end
1223
+ end
1224
+ # Use it to fetch Timers parameters from STB Settings in MAS
1225
+ # * *Args* :
1226
+ # * *Returns* :
1227
+ # - array of values in order:
1228
+ # - [0]Display sleep timer in Quick Settings menu
1229
+ def fetch_timers_parameters
1230
+ begin
1231
+ selenium = _mas_login
1232
+ return [] if selenium.nil?
1233
+ timers_parameters = []
1234
+ _navigate_to_stb_settings(selenium)
1235
+ loginfo2 'Fetching TImers parameters'
1236
+ selenium.wait_for_text 'Timers'
1237
+ (1..1).each{|i| timers_parameters.push(selenium.get_text("//table[17]/tbody/tr[2]/td/table/tbody/tr[#{i}]/td[2]"))}
1238
+ return timers_parameters
1239
+ ensure
1240
+ _mas_logout(selenium) unless selenium.nil?
1241
+ end
1242
+ end
1243
+
1244
+ # Use it to fetch primary source id of a service
1245
+ # * *Args* :
1246
+ # - +service+ -> Service name of showcase channel
1247
+ # * *Returns* :
1248
+ # - Hash contaning source id values {'SA Source'=> <value>, 'SA UDCP Alternate Source ID'=> <value>, 'SA Event Source'=> <value>, ''SA UDCP Alternate Event Source ID' => <value>}
1249
+ def mas_conductor_fetch_source_id_for_service service
1250
+ begin
1251
+ value_hash = {}
1252
+ selenium = _mas_login
1253
+ return false if selenium.nil?
1254
+ _navigate_to_search_service(selenium)
1255
+ loginfo2 "Searching Given Service [#{service}]"
1256
+ selenium.type "id=searchBox", service
1257
+ selenium.click "id=dijit_form_Button_0"
1258
+ sleep 10.sec
1259
+
1260
+ link_ele1 = "//td/a[@href = \"/mystroui/viewTheService.do?pslng.app=MDNWatchTvApplication&pslng.svc=#{service}&returnTo=searchSvcs&pslng.pky=searchSvcs\"]"
1261
+ link_ele2 = "//td/a[@href = \"/mystroui/viewTheService.do?pslng.app=MDNPpvApplication&pslng.svc=#{service}&returnTo=searchSvcs&pslng.pky=searchSvcs\"]"
1262
+ loginfo2 "Navigating to Service settings"
1263
+
1264
+ if selenium.is_element_present(link_ele1)
1265
+ selenium.click link_ele1, :wait_for => :page
1266
+ elsif selenium.is_element_present(link_ele2)
1267
+ selenium.click link_ele2, :wait_for => :page
1268
+ else
1269
+ loginfo2 "Service [#{service}] not found"
1270
+ return {}
1271
+ end
1272
+ selenium.wait_for_text 'Service Name'
1273
+ loginfo2 "Fetching SA Source id and SA UDCP Alternate Source ID"
1274
+ 110.times do |i|
1275
+ break unless selenium.is_element_present("//body/div[2]/div/table/tbody/tr[#{((i+1))}]/td")
1276
+ field_name = selenium.get_text("//body/div[2]/div/table/tbody/tr[#{((i+1))}]/td")
1277
+ if field_name.eql?('SA Source')
1278
+ value = selenium.get_text("//body/div[2]/div/table/tbody/tr[#{((i+1)+1)}]/td")
1279
+ value_hash['SA Source'] = /\((\w+)\)/.match(value)[1].to_i
1280
+ elsif field_name.eql?('SA UDCP Alternate Source ID')
1281
+ value = selenium.get_text("//body/div[2]/div/table/tbody/tr[#{((i+1)+1)}]/td")
1282
+ value_hash['SA UDCP Alternate Source ID'] = /\((\w+)\)/.match(value)[1].to_i unless value.eql?('None (0)')
1283
+ elsif field_name.eql?('SA Event Source')
1284
+ value = selenium.get_text("//body/div[2]/div/table/tbody/tr[#{((i+1)+1)}]/td")
1285
+ value_hash['SA Event Source'] = /\((\w+)\)/.match(value)[1].to_i
1286
+ elsif field_name.eql?('SA UDCP Alternate Event Source ID')
1287
+ value = selenium.get_text("//body/div[2]/div/table/tbody/tr[#{((i+1)+1)}]/td")
1288
+ value_hash['SA UDCP Alternate Event Source ID'] = /\((\w+)\)/.match(value)[1].to_i unless value.eql?('None (0)')
1289
+ end
1290
+ end
1291
+ loginfo2 "SA Source Id value not found" if value_hash.empty?
1292
+ return value_hash
1293
+ rescue StandardError => e
1294
+ logdebug "Error fetching primary source id of a service : #{e.message}"
1295
+ return value_hash
1296
+ ensure
1297
+ _mas_logout(selenium) unless selenium.nil?
1298
+ end
1299
+ end
1300
+
1301
+ #Private Method
1302
+ #Use it to get enhanced menu name on a service
1303
+ def _mas_conductor_fetch_enhanced_menu_for_service service
1304
+ begin
1305
+ value_hash = {}
1306
+ selenium = _mas_login
1307
+ return false if selenium.nil?
1308
+ _navigate_to_search_service(selenium)
1309
+ loginfo2 "Searching Given Service [#{service}]"
1310
+ selenium.type "id=searchBox", service
1311
+ selenium.click "id=dijit_form_Button_0"
1312
+ sleep 10.sec
1313
+ link_ele1 = "//td/a[contains(@href , \"/mystroui/editNetExpressMenu.do?pslng.app=MDNWatchTvApplication&pslng.svc=#{service}&returnTo=searchSvcs&pslng.pky=searchSvcs&menuid\")]"
1314
+
1315
+ if selenium.is_element_present(link_ele1)
1316
+ return selenium.get_text(link_ele1)
1317
+ else
1318
+ loginfo2 "Enhanced menu not found for service [#{service}]"
1319
+ return nil
1320
+ end
1321
+
1322
+ rescue StandardError => e
1323
+ logdebug "Error fetching primary source id of a service : #{e.message}"
1324
+ return value_hash
1325
+ ensure
1326
+ _mas_logout(selenium) unless selenium.nil?
1327
+ end
1328
+ end