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.
- checksums.yaml +7 -0
- data/lib/EXECUTION_ENGINE.md +282 -0
- data/lib/Gemfile +12 -0
- data/lib/README.md +138 -0
- data/lib/User_Lib/helpers/helpers.rb +13 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_black_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_color_rois.rb +9 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_image_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_text_rois.rb +48 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_1080/apple_tv_1080_video_rois.rb +11 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_black_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_color_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_image_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_rois.rb +23 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_text_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_720/apple_tv_720_video_rois.rb +11 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_black_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_color_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_image_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_rois.rb +23 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_text_rois.rb +7 -0
- data/lib/User_Lib/rois/apple_tv/apple_tv_video_rois.rb +7 -0
- data/lib/User_Lib/rois/black_rois.rb +33 -0
- data/lib/User_Lib/rois/color_rois.rb +38 -0
- data/lib/User_Lib/rois/dta/dta_1080/dta_1080_black_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_1080/dta_1080_color_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_1080/dta_1080_image_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_1080/dta_1080_rois.rb +26 -0
- data/lib/User_Lib/rois/dta/dta_1080/dta_1080_text_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_1080/dta_1080_video_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_720/dta_720_black_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_720/dta_720_color_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_720/dta_720_image_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_720/dta_720_rois.rb +26 -0
- data/lib/User_Lib/rois/dta/dta_720/dta_720_text_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_720/dta_720_video_rois.rb +8 -0
- data/lib/User_Lib/rois/dta/dta_black_rois.rb +9 -0
- data/lib/User_Lib/rois/dta/dta_color_rois.rb +9 -0
- data/lib/User_Lib/rois/dta/dta_image_rois.rb +9 -0
- data/lib/User_Lib/rois/dta/dta_rois.rb +26 -0
- data/lib/User_Lib/rois/dta/dta_text_rois.rb +9 -0
- data/lib/User_Lib/rois/dta/dta_video_rois.rb +9 -0
- data/lib/User_Lib/rois/image_rois.rb +38 -0
- data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_image_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_rois.rb +26 -0
- data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_1080/mdn_1080_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_image_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_rois.rb +26 -0
- data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_720/mdn_720_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mdn/mdn_black_rois.rb +9 -0
- data/lib/User_Lib/rois/mdn/mdn_color_rois.rb +9 -0
- data/lib/User_Lib/rois/mdn/mdn_image_rois.rb +9 -0
- data/lib/User_Lib/rois/mdn/mdn_rois.rb +26 -0
- data/lib/User_Lib/rois/mdn/mdn_text_rois.rb +13 -0
- data/lib/User_Lib/rois/mdn/mdn_video_rois.rb +9 -0
- data/lib/User_Lib/rois/mobile/android/android_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_image_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_image_rois.rb +43 -0
- data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_rois.rb +22 -0
- data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_phone/android_phone_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_rois.rb +22 -0
- data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_image_rois.rb +54 -0
- data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_rois.rb +22 -0
- data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_tablet/android_tablet_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/android/android_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_image_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_image_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_rois.rb +22 -0
- data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_phone/ios_phone_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_rois.rb +22 -0
- data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_color_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_image_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_rois.rb +22 -0
- data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_tablet/ios_tablet_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/ios/ios_video_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/mobile_black_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/mobile_color_rois.rb +12 -0
- data/lib/User_Lib/rois/mobile/mobile_image_rois.rb +38 -0
- data/lib/User_Lib/rois/mobile/mobile_rois.rb +22 -0
- data/lib/User_Lib/rois/mobile/mobile_text_rois.rb +8 -0
- data/lib/User_Lib/rois/mobile/mobile_video_rois.rb +8 -0
- data/lib/User_Lib/rois/passport/passport_1080/passport_1080_black_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_1080/passport_1080_color_rois.rb +9 -0
- data/lib/User_Lib/rois/passport/passport_1080/passport_1080_image_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_1080/passport_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/passport/passport_1080/passport_1080_text_rois.rb +8 -0
- data/lib/User_Lib/rois/passport/passport_1080/passport_1080_video_rois.rb +8 -0
- data/lib/User_Lib/rois/passport/passport_720/passport_720_black_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_720/passport_720_color_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_720/passport_720_image_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_720/passport_720_rois.rb +23 -0
- data/lib/User_Lib/rois/passport/passport_720/passport_720_text_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_720/passport_720_video_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_black_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_color_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_image_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_rois.rb +23 -0
- data/lib/User_Lib/rois/passport/passport_text_rois.rb +7 -0
- data/lib/User_Lib/rois/passport/passport_video_rois.rb +7 -0
- data/lib/User_Lib/rois/rois.rb +22 -0
- data/lib/User_Lib/rois/roku/roku_720/roku_720_black_rois.rb +37 -0
- data/lib/User_Lib/rois/roku/roku_720/roku_720_color_rois.rb +336 -0
- data/lib/User_Lib/rois/roku/roku_720/roku_720_image_rois.rb +235 -0
- data/lib/User_Lib/rois/roku/roku_720/roku_720_rois.rb +23 -0
- data/lib/User_Lib/rois/roku/roku_720/roku_720_text_rois.rb +1523 -0
- data/lib/User_Lib/rois/roku/roku_720/roku_720_video_rois.rb +32 -0
- data/lib/User_Lib/rois/roku/roku_black_rois.rb +14 -0
- data/lib/User_Lib/rois/roku/roku_color_rois.rb +9 -0
- data/lib/User_Lib/rois/roku/roku_image_rois.rb +13 -0
- data/lib/User_Lib/rois/roku/roku_rois.rb +23 -0
- data/lib/User_Lib/rois/roku/roku_text_rois.rb +9 -0
- data/lib/User_Lib/rois/roku/roku_video_rois.rb +9 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_black_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_color_rois.rb +11 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_image_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_text_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_1080/roku_tv_1080_video_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_black_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_color_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_image_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_rois.rb +23 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_text_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_720/roku_tv_720_video_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_black_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_color_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_image_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_rois.rb +23 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_text_rois.rb +12 -0
- data/lib/User_Lib/rois/roku_tv/roku_tv_video_rois.rb +12 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_black_rois.rb +13 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_color_rois.rb +29 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_image_rois.rb +9 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_text_rois.rb +92 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_1080/samsung_tv_1080_video_rois.rb +11 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_black_rois.rb +9 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_color_rois.rb +9 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_image_rois.rb +9 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_rois.rb +23 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_text_rois.rb +12 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_720/samsung_tv_720_video_rois.rb +11 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_black_rois.rb +9 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_color_rois.rb +9 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_image_rois.rb +9 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_rois.rb +23 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_text_rois.rb +12 -0
- data/lib/User_Lib/rois/samsung_tv/samsung_tv_video_rois.rb +9 -0
- data/lib/User_Lib/rois/sara/sara_1080/sara_1080_black_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_1080/sara_1080_color_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_1080/sara_1080_image_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_1080/sara_1080_rois.rb +26 -0
- data/lib/User_Lib/rois/sara/sara_1080/sara_1080_text_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_1080/sara_1080_video_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_720/sara_720_black_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_720/sara_720_color_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_720/sara_720_image_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_720/sara_720_rois.rb +26 -0
- data/lib/User_Lib/rois/sara/sara_720/sara_720_text_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_720/sara_720_video_rois.rb +8 -0
- data/lib/User_Lib/rois/sara/sara_black_rois.rb +9 -0
- data/lib/User_Lib/rois/sara/sara_color_rois.rb +9 -0
- data/lib/User_Lib/rois/sara/sara_image_rois.rb +9 -0
- data/lib/User_Lib/rois/sara/sara_rois.rb +26 -0
- data/lib/User_Lib/rois/sara/sara_text_rois.rb +9 -0
- data/lib/User_Lib/rois/sara/sara_video_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_black_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_color_rois.rb +17 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_image_rois.rb +19 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_text_rois.rb +47 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_1080/iguide_1080_video_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_black_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_color_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_image_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_text_rois.rb +17 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_720/iguide_720_video_rois.rb +11 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_black_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_color_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_image_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_text_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/iguide/iguide_video_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_black_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_color_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_image_rois.rb +12 -0
- data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_text_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/odn/odn_1080/odn_1080_video_rois.rb +11 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_black_rois.rb +46 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_color_rois.rb +142 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_image_rois.rb +103 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_black_rois.rb +6 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_color_rois.rb +6 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_image_rois.rb +6 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_text_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_moto/odn_720_moto_video_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_black_rois.rb +6 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_color_rois.rb +6 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_image_rois.rb +6 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_text_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_sa/odn_720_sa_video_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_black_rois.rb +6 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_color_rois.rb +77 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_image_rois.rb +67 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_text_rois.rb +159 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_samsung/odn_720_samsung_video_rois.rb +17 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_text_rois.rb +221 -0
- data/lib/User_Lib/rois/stb/odn/odn_720/odn_720_video_rois.rb +26 -0
- data/lib/User_Lib/rois/stb/odn/odn_black_rois.rb +10 -0
- data/lib/User_Lib/rois/stb/odn/odn_color_rois.rb +10 -0
- data/lib/User_Lib/rois/stb/odn/odn_image_rois.rb +58 -0
- data/lib/User_Lib/rois/stb/odn/odn_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/odn/odn_text_rois.rb +70 -0
- data/lib/User_Lib/rois/stb/odn/odn_video_rois.rb +19 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_black_rois.rb +16 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_color_rois.rb +373 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_black_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_color_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_image_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_text_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis_video_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_black_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_color_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_image_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_rois.rb +26 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_text_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris_video_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_black_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_color_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_image_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_rois.rb +26 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_text_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax_video_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_black_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_color_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_image_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_rois.rb +26 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_text_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch_video_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_image_rois.rb +1592 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_black_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_color_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_image_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_text_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace_video_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_text_rois.rb +2489 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_1080/spectrum_1080_video_rois.rb +64 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_black_rois.rb +7 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_color_rois.rb +63 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_black_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_color_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_image_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_rois.rb +26 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_text_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris_video_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_black_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_color_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_image_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_rois.rb +26 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_text_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax_video_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_black_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_color_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_image_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_rois.rb +26 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_text_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch_video_rois.rb +8 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_image_rois.rb +117 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_text_rois.rb +84 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_720/spectrum_720_video_rois.rb +35 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_black_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_color_rois.rb +17 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_image_rois.rb +49 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_text_rois.rb +51 -0
- data/lib/User_Lib/rois/stb/spectrum/spectrum_video_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/stb_black_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/stb_color_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/stb_image_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/stb_rois.rb +23 -0
- data/lib/User_Lib/rois/stb/stb_text_rois.rb +9 -0
- data/lib/User_Lib/rois/stb/stb_video_rois.rb +9 -0
- data/lib/User_Lib/rois/template.txt +23 -0
- data/lib/User_Lib/rois/text_rois.rb +36 -0
- data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_black_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_color_rois.rb +9 -0
- data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_image_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_rois.rb +23 -0
- data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_text_rois.rb +9 -0
- data/lib/User_Lib/rois/tivo/tivo_1080/tivo_1080_video_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_black_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_color_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_image_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_rois.rb +23 -0
- data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_text_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_720/tivo_720_video_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_black_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_color_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_image_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_rois.rb +23 -0
- data/lib/User_Lib/rois/tivo/tivo_text_rois.rb +7 -0
- data/lib/User_Lib/rois/tivo/tivo_video_rois.rb +7 -0
- data/lib/User_Lib/rois/video_rois.rb +33 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_dvr.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_guide.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_library.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_live_tv.rb +17 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_login.rb +24 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_main_menu.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_mini_guide.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_movies.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_on_demand.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_parental_controls.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_product_page.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_screen.rb +23 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_search.rb +31 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_settings.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_tv_shows.rb +25 -0
- data/lib/User_Lib/screen/apple_tv/apple_tv_video_store.rb +25 -0
- data/lib/User_Lib/screen/dta/dta_dvr.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_guide.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_library.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_live_tv.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_log_in.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_main_menu.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_mini_guide.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_movies.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_on_demand.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_parental_controls.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_product_page.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_screen.rb +24 -0
- data/lib/User_Lib/screen/dta/dta_search.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_settings.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_tv_shows.rb +26 -0
- data/lib/User_Lib/screen/dta/dta_video_store.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_dvr.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_guide.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_library.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_live_tv.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_log_in.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_main_menu.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_mini_guide.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_movies.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_on_demand.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_parental_controls.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_product_page.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_screen.rb +24 -0
- data/lib/User_Lib/screen/mdn/mdn_search.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_settings.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_tv_shows.rb +26 -0
- data/lib/User_Lib/screen/mdn/mdn_video_store.rb +26 -0
- data/lib/User_Lib/screen/mobile/android/android_devices.rb +35 -0
- data/lib/User_Lib/screen/mobile/android/android_dvr.rb +337 -0
- data/lib/User_Lib/screen/mobile/android/android_favorites.rb +164 -0
- data/lib/User_Lib/screen/mobile/android/android_guide.rb +256 -0
- data/lib/User_Lib/screen/mobile/android/android_live_tv.rb +372 -0
- data/lib/User_Lib/screen/mobile/android/android_login.rb +111 -0
- data/lib/User_Lib/screen/mobile/android/android_main_menu.rb +53 -0
- data/lib/User_Lib/screen/mobile/android/android_on_demand.rb +402 -0
- data/lib/User_Lib/screen/mobile/android/android_parental_controls.rb +73 -0
- data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_dvr.rb +31 -0
- data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_guide.rb +39 -0
- data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_live_tv.rb +104 -0
- data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_main_menu.rb +27 -0
- data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_on_demand.rb +35 -0
- data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_product_page.rb +7 -0
- data/lib/User_Lib/screen/mobile/android/android_phone/android_phone_search.rb +26 -0
- data/lib/User_Lib/screen/mobile/android/android_privacy_legal.rb +54 -0
- data/lib/User_Lib/screen/mobile/android/android_product_page.rb +484 -0
- data/lib/User_Lib/screen/mobile/android/android_screen.rb +56 -0
- data/lib/User_Lib/screen/mobile/android/android_search.rb +39 -0
- data/lib/User_Lib/screen/mobile/android/android_settings.rb +90 -0
- data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_dvr.rb +58 -0
- data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_guide.rb +24 -0
- data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_live_tv.rb +24 -0
- data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_main_menu.rb +19 -0
- data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_on_demand.rb +16 -0
- data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_product_page.rb +45 -0
- data/lib/User_Lib/screen/mobile/android/android_tablet/android_tablet_search.rb +14 -0
- data/lib/User_Lib/screen/mobile/devices_mobile.rb +53 -0
- data/lib/User_Lib/screen/mobile/dvr_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/favorites_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/guide_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/ios/ios_devices.rb +43 -0
- data/lib/User_Lib/screen/mobile/ios/ios_dvr.rb +231 -0
- data/lib/User_Lib/screen/mobile/ios/ios_favorites.rb +79 -0
- data/lib/User_Lib/screen/mobile/ios/ios_guide.rb +53 -0
- data/lib/User_Lib/screen/mobile/ios/ios_live_tv.rb +413 -0
- data/lib/User_Lib/screen/mobile/ios/ios_login.rb +76 -0
- data/lib/User_Lib/screen/mobile/ios/ios_main_menu.rb +38 -0
- data/lib/User_Lib/screen/mobile/ios/ios_on_demand.rb +371 -0
- data/lib/User_Lib/screen/mobile/ios/ios_parental_controls.rb +104 -0
- data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_dvr.rb +14 -0
- data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_live_tv.rb +36 -0
- data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_main_menu.rb +7 -0
- data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_on_demand.rb +7 -0
- data/lib/User_Lib/screen/mobile/ios/ios_phone/ios_phone_search.rb +13 -0
- data/lib/User_Lib/screen/mobile/ios/ios_privacy_legal.rb +56 -0
- data/lib/User_Lib/screen/mobile/ios/ios_product_page.rb +441 -0
- data/lib/User_Lib/screen/mobile/ios/ios_screen.rb +60 -0
- data/lib/User_Lib/screen/mobile/ios/ios_search.rb +145 -0
- data/lib/User_Lib/screen/mobile/ios/ios_settings.rb +34 -0
- data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_live_tv.rb +34 -0
- data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_main_menu.rb +7 -0
- data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_on_demand.rb +7 -0
- data/lib/User_Lib/screen/mobile/ios/ios_tablet/ios_tablet_search.rb +13 -0
- data/lib/User_Lib/screen/mobile/live_tv_mobile.rb +73 -0
- data/lib/User_Lib/screen/mobile/login_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/main_menu_mobile.rb +83 -0
- data/lib/User_Lib/screen/mobile/mobile_screen.rb +232 -0
- data/lib/User_Lib/screen/mobile/on_demand_mobile.rb +70 -0
- data/lib/User_Lib/screen/mobile/parental_controls_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/privacy_legal_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/product_page_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/search_mobile.rb +5 -0
- data/lib/User_Lib/screen/mobile/settings_mobile.rb +33 -0
- data/lib/User_Lib/screen/passport/passport_dvr.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_guide.rb +37 -0
- data/lib/User_Lib/screen/passport/passport_library.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_live_tv.rb +17 -0
- data/lib/User_Lib/screen/passport/passport_main_menu.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_mini_guide.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_movies.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_on_demand.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_parental_controls.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_product_page.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_screen.rb +23 -0
- data/lib/User_Lib/screen/passport/passport_search.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_settings.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_tv_shows.rb +25 -0
- data/lib/User_Lib/screen/passport/passport_video_store.rb +25 -0
- data/lib/User_Lib/screen/roku/brs/roku_guide_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/brs/roku_home_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/brs/roku_live_tv_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/brs/roku_login_brs.rb +103 -0
- data/lib/User_Lib/screen/roku/brs/roku_main_menu_brs.rb +46 -0
- data/lib/User_Lib/screen/roku/brs/roku_on_demand_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/brs/roku_product_page_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/brs/roku_screen_brs.rb +9 -0
- data/lib/User_Lib/screen/roku/brs/roku_search_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/brs/roku_settings_brs.rb +42 -0
- data/lib/User_Lib/screen/roku/brs/roku_watch_later_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/brs/roku_welcome_brs.rb +12 -0
- data/lib/User_Lib/screen/roku/roku_dvr.rb +7 -0
- data/lib/User_Lib/screen/roku/roku_guide.rb +590 -0
- data/lib/User_Lib/screen/roku/roku_home.rb +346 -0
- data/lib/User_Lib/screen/roku/roku_library.rb +26 -0
- data/lib/User_Lib/screen/roku/roku_live_tv.rb +210 -0
- data/lib/User_Lib/screen/roku/roku_login.rb +795 -0
- data/lib/User_Lib/screen/roku/roku_main_menu.rb +425 -0
- data/lib/User_Lib/screen/roku/roku_mini_guide.rb +7 -0
- data/lib/User_Lib/screen/roku/roku_on_demand.rb +479 -0
- data/lib/User_Lib/screen/roku/roku_product_page.rb +483 -0
- data/lib/User_Lib/screen/roku/roku_screen.rb +85 -0
- data/lib/User_Lib/screen/roku/roku_search.rb +229 -0
- data/lib/User_Lib/screen/roku/roku_settings.rb +304 -0
- data/lib/User_Lib/screen/roku/roku_watch_later.rb +51 -0
- data/lib/User_Lib/screen/roku/roku_welcome.rb +10 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_dvr.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_guide.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_home.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_library.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_live_tv.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_login.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_main_menu.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_mini_guide.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_on_demand.rb +26 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_product_page.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_screen.rb +7 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_search.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_settings.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_watch_later.rb +14 -0
- data/lib/User_Lib/screen/roku_tv/roku_tv_welcome.rb +14 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_dvr.rb +24 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_guide.rb +24 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_library.rb +24 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_live_tv.rb +21 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_login.rb +13 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_main_menu.rb +64 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_mini_guide.rb +24 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_movies.rb +140 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_on_demand.rb +76 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_parental_controls.rb +24 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_product_page.rb +24 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_screen.rb +74 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_search.rb +29 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_settings.rb +189 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_tv_shows.rb +24 -0
- data/lib/User_Lib/screen/samsung_tv/samsung_tv_video_store.rb +24 -0
- data/lib/User_Lib/screen/sara/sara_dvr.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_guide.rb +43 -0
- data/lib/User_Lib/screen/sara/sara_library.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_live_tv.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_log_in.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_main_menu.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_mini_guide.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_movies.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_on_demand.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_parental_controls.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_product_page.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_screen.rb +24 -0
- data/lib/User_Lib/screen/sara/sara_search.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_settings.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_tv_shows.rb +26 -0
- data/lib/User_Lib/screen/sara/sara_video_store.rb +26 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_devices.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_dvr.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_favorites.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_guide.rb +39 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_home.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_library.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_live_tv.rb +59 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_login.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_main_menu.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_mini_guide.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_movies.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_on_demand.rb +531 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_parental_controls.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_privacy_legal.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_product_page.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_quick_menu.rb +7 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_screen.rb +21 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_search.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_settings.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_tv_shows.rb +10 -0
- data/lib/User_Lib/screen/stb/iguide/iguide_video_store.rb +10 -0
- data/lib/User_Lib/screen/stb/login_stb.rb +5 -0
- data/lib/User_Lib/screen/stb/odn/odn_dvr.rb +59 -0
- data/lib/User_Lib/screen/stb/odn/odn_favorites.rb +8 -0
- data/lib/User_Lib/screen/stb/odn/odn_guide.rb +177 -0
- data/lib/User_Lib/screen/stb/odn/odn_live_tv.rb +115 -0
- data/lib/User_Lib/screen/stb/odn/odn_login.rb +8 -0
- data/lib/User_Lib/screen/stb/odn/odn_main_menu.rb +175 -0
- data/lib/User_Lib/screen/stb/odn/odn_on_demand.rb +1170 -0
- data/lib/User_Lib/screen/stb/odn/odn_on_demand_kids.rb +23 -0
- data/lib/User_Lib/screen/stb/odn/odn_on_demand_left_menu.rb +180 -0
- data/lib/User_Lib/screen/stb/odn/odn_parental_controls.rb +9 -0
- data/lib/User_Lib/screen/stb/odn/odn_product_page.rb +8 -0
- data/lib/User_Lib/screen/stb/odn/odn_screen.rb +111 -0
- data/lib/User_Lib/screen/stb/odn/odn_search.rb +167 -0
- data/lib/User_Lib/screen/stb/odn/odn_settings.rb +142 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_diagnostics.rb +27 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/screen_spectrum_docsis.rb +12 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_guide.rb +10 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_main_menu.rb +10 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_settings.rb +10 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_dvr.rb +1781 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_guide.rb +841 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_library.rb +384 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_live_tv.rb +259 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_main_menu.rb +223 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_mini_guide.rb +404 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_movies.rb +420 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_netflix.rb +37 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_on_demand.rb +2137 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_parental_controls.rb +528 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_pay_per_view.rb +26 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_product_page.rb +58 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_screen.rb +48 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_search.rb +92 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_settings.rb +1657 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_tv_shows.rb +1532 -0
- data/lib/User_Lib/screen/stb/spectrum/spectrum_video_store.rb +1598 -0
- data/lib/User_Lib/screen/stb/stb_screen.rb +7 -0
- data/lib/User_Lib/screen/tivo/tivo_dvr.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_guide.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_library.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_live_tv.rb +17 -0
- data/lib/User_Lib/screen/tivo/tivo_login.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_main_menu.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_mini_guide.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_movies.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_on_demand.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_parental_controls.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_product_page.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_screen.rb +20 -0
- data/lib/User_Lib/screen/tivo/tivo_search.rb +31 -0
- data/lib/User_Lib/screen/tivo/tivo_settings.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_tv_shows.rb +25 -0
- data/lib/User_Lib/screen/tivo/tivo_video_store.rb +25 -0
- data/lib/config/ConfigParams.xml +96 -0
- data/lib/config/ImageROI.xml +45 -0
- data/lib/config/ROI.xml +150 -0
- data/lib/config/Userlog4j.xml +62 -0
- data/lib/config/schema-docs/mode.xsd +12 -0
- data/lib/config/schema-docs/processTestJobs.xsd +63 -0
- data/lib/config/schema-docs/rackip.xsd +24 -0
- data/lib/copy_ref_images.rb +199 -0
- data/lib/copy_repo.rb +136 -0
- data/lib/diagnostics/conductor/conductor_checkup.tmc +24 -0
- data/lib/diagnostics/db/mad_db_check.tmc +56 -0
- data/lib/diagnostics/db/mas_db_checkup.tmc +24 -0
- data/lib/diagnostics/db/mas_db_checkup_gem.tmc +20 -0
- data/lib/diagnostics/db/mas_db_checkup_jar.tmc +50 -0
- data/lib/diagnostics/iguide/iguide_nvram_reset.tmc +23 -0
- data/lib/diagnostics/iguide/iguide_prepare_stb.tmc +33 -0
- data/lib/diagnostics/iguide/iguide_prepare_stb_and_health_check.tmc +63 -0
- data/lib/diagnostics/iguide/iguide_stb_health_check.tmc +54 -0
- data/lib/diagnostics/prepare_stb.tmc +30 -0
- data/lib/diagnostics/prepare_stb_and_health_check.tmc +56 -0
- data/lib/diagnostics/script_options/options_checkup.tmc +145 -0
- data/lib/diagnostics/server_components_check.tmc +62 -0
- data/lib/diagnostics/ssh/dncs_checkup.tmc +24 -0
- data/lib/diagnostics/ssh/mas_checkup.tmc +24 -0
- data/lib/diagnostics/stb_health_check.tmc +46 -0
- data/lib/diagnostics/stb_ip_check.tmc +120 -0
- data/lib/diagnostics/webservices/mas_rest_services_checkup.tmc +24 -0
- data/lib/diagnostics/webservices/mas_soap_services_checkup.tmc +24 -0
- data/lib/dsllib/common/dncs/dncs_utils.rb +449 -0
- data/lib/dsllib/common/mas_db/mas_conductor.rb +1328 -0
- data/lib/dsllib/common/mas_db/mas_db.rb +154 -0
- data/lib/dsllib/common/mas_db/mas_publish.rb +2349 -0
- data/lib/dsllib/common/mas_db/mas_rest_services.rb +75 -0
- data/lib/dsllib/common/mas_db/mas_soap_services.rb +540 -0
- data/lib/dsllib/common/mas_db/mas_utils.rb +422 -0
- data/lib/dsllib/common/remote_diagnostics/mdn_remote_diagnostics.rb +1335 -0
- data/lib/dsllib/common/remote_diagnostics/odn_web_server.rb +269 -0
- data/lib/dsllib/common/utils/excel_export.rb +273 -0
- data/lib/dsllib/common/utils/excel_module.rb +890 -0
- data/lib/dsllib/common/utils/server_components_utils.rb +130 -0
- data/lib/dsllib/common/utils/stb_health_check_utils.rb +92 -0
- data/lib/dsllib/common/utils/sword_utils.rb +393 -0
- data/lib/dsllib/common/utils/tmc_utils.rb +2944 -0
- data/lib/dsllib/common/utils/virtual_keyboard_navigator.rb +208 -0
- data/lib/dsllib/common/utils/virtual_keyboard_vp_navigator.rb +195 -0
- data/lib/dsllib/performance/DTA/roi.rb +214 -0
- data/lib/dsllib/performance/DTA/utils.rb +96 -0
- data/lib/dsllib/performance/iguide_concurrent_test/ROI.rb +236 -0
- data/lib/dsllib/performance/iguide_concurrent_test/utils.rb +533 -0
- data/lib/dsllib/performance/measure_tune.rb +438 -0
- data/lib/dsllib/performance/perf_lib.rb +660 -0
- data/lib/end_iteration.rb +4 -0
- data/lib/lib/data_services/channel.rb +39 -0
- data/lib/lib/data_services/data_services.rb +14 -0
- data/lib/lib/data_services/guide.rb +104 -0
- data/lib/lib/data_services/lineup.rb +114 -0
- data/lib/lib/data_services/program.rb +48 -0
- data/lib/lib/data_services/schedule.rb +18 -0
- data/lib/lib/data_services/splunk_connector.rb +135 -0
- data/lib/lib/data_services/splunk_data_reader.rb +77 -0
- data/lib/lib/element/element.rb +79 -0
- data/lib/lib/extensions/array_extensions.rb +32 -0
- data/lib/lib/extensions/datetime_extensions.rb +8 -0
- data/lib/lib/extensions/extensions.rb +51 -0
- data/lib/lib/extensions/file_extensions.rb +32 -0
- data/lib/lib/extensions/float_extensions.rb +32 -0
- data/lib/lib/extensions/integer_extensions.rb +39 -0
- data/lib/lib/extensions/nethttp_extensions.rb +11 -0
- data/lib/lib/extensions/object_extensions.rb +7 -0
- data/lib/lib/extensions/string_extensions.rb +35 -0
- data/lib/lib/helpers/tmc_helpers/csv_helper/csv_helper.rb +85 -0
- data/lib/lib/helpers/tmc_helpers/email_helper/email_helper.rb +71 -0
- data/lib/lib/helpers/tmc_helpers/http_helper/http_helper.rb +133 -0
- data/lib/lib/helpers/tmc_helpers/roi_helper/roi_helper.rb +17 -0
- data/lib/lib/helpers/tmc_helpers/snmp_helper/snmp_helper.rb +71 -0
- data/lib/lib/helpers/tmc_helpers/ssh_helper/ssh_helper.rb +337 -0
- data/lib/lib/helpers/tmc_helpers/tmc_helpers.rb +1260 -0
- data/lib/lib/keyboard/apple_tv/apple_tv_password_keyboard.rb +102 -0
- data/lib/lib/keyboard/apple_tv/apple_tv_search_keyboard.rb +103 -0
- data/lib/lib/keyboard/apple_tv/apple_tv_username_keyboard.rb +105 -0
- data/lib/lib/keyboard/keyboard.rb +504 -0
- data/lib/lib/keyboard/keyboard_layout.rb +51 -0
- data/lib/lib/keyboard/roku/roku_reset_pin_keyboard.rb +12 -0
- data/lib/lib/keyboard/roku/roku_rsg_search_keyboard.rb +67 -0
- data/lib/lib/keyboard/roku/roku_rsg_signin_keyboard.rb +106 -0
- data/lib/lib/keyboard/roku/roku_search_keyboard.rb +10 -0
- data/lib/lib/keyboard/roku/roku_signin_keyboard.rb +42 -0
- data/lib/lib/keyboard/samsung_tv/samsung_tv_search_keyboard.rb +50 -0
- data/lib/lib/keyboard/samsung_tv/samsung_tv_signin_keyboard.rb +52 -0
- data/lib/lib/keyboard/stb/odn/odn_on_demand_search_keyboard.rb +10 -0
- data/lib/lib/keyboard/stb/odn/odn_search_keyboard.rb +10 -0
- data/lib/lib/keyboard/stb/spectrum/spectrum_netflix_email_keyboard.rb +50 -0
- data/lib/lib/keyboard/stb/spectrum/spectrum_netflix_keyboard.rb +43 -0
- data/lib/lib/keyboard/stb/spectrum/spectrum_netflix_name_keyboard.rb +16 -0
- data/lib/lib/keyboard/stb/spectrum/spectrum_search_keyboard.rb +32 -0
- data/lib/lib/keyboard/tivo/tivo_password_keyboard.rb +0 -0
- data/lib/lib/keyboard/tivo/tivo_search_keyboard.rb +0 -0
- data/lib/lib/keyboard/tivo/tivo_username_keyboard.rb +0 -0
- data/lib/lib/keys/apple_tv/apple_tv_keys.rb +26 -0
- data/lib/lib/keys/base_keys.rb +14 -0
- data/lib/lib/keys/dta/dta_keys.rb +60 -0
- data/lib/lib/keys/mdn/mdn_keys.rb +60 -0
- data/lib/lib/keys/passport/passport_keys.rb +59 -0
- data/lib/lib/keys/roku/roku_keys.rb +31 -0
- data/lib/lib/keys/roku_tv/roku_tv_keys.rb +32 -0
- data/lib/lib/keys/samsung_tv/samsung_tv_keys.rb +58 -0
- data/lib/lib/keys/sara/sara_keys.rb +60 -0
- data/lib/lib/keys/stb/iguide/iguide_keys.rb +56 -0
- data/lib/lib/keys/stb/odn/odn_keys.rb +63 -0
- data/lib/lib/keys/stb/spectrum/spectrum_keys.rb +59 -0
- data/lib/lib/keys/stb/stb_keys.rb +13 -0
- data/lib/lib/keys/tivo/tivo_keys.rb +26 -0
- data/lib/lib/logger/multi_io.rb +14 -0
- data/lib/lib/logger/tmc_dut_logger.rb +251 -0
- data/lib/lib/logger/tmc_logger.rb +30 -0
- data/lib/lib/mixins/assignable.rb +19 -0
- data/lib/lib/mixins/can_have_special_methods.rb +50 -0
- data/lib/lib/mixins/enumish.rb +16 -0
- data/lib/lib/new_platform.rb +302 -0
- data/lib/lib/new_sub_platform.rb +90 -0
- data/lib/lib/platform/apple_tv/apple_tv.rb +33 -0
- data/lib/lib/platform/apple_tv/apple_tv_1080/apple_tv_1080.rb +54 -0
- data/lib/lib/platform/apple_tv/apple_tv_720/apple_tv_720.rb +14 -0
- data/lib/lib/platform/dta/dta.rb +35 -0
- data/lib/lib/platform/dta/dta_1080/dta_1080.rb +15 -0
- data/lib/lib/platform/dta/dta_720/dta_720.rb +15 -0
- data/lib/lib/platform/mdn/mdn.rb +35 -0
- data/lib/lib/platform/mdn/mdn_1080/mdn_1080.rb +15 -0
- data/lib/lib/platform/mdn/mdn_720/mdn_720.rb +15 -0
- data/lib/lib/platform/mobile/android/android.rb +23 -0
- data/lib/lib/platform/mobile/android/android_phone/android_phone.rb +23 -0
- data/lib/lib/platform/mobile/android/android_tablet/android_tablet.rb +23 -0
- data/lib/lib/platform/mobile/ios/ios.rb +23 -0
- data/lib/lib/platform/mobile/ios/ios_phone/ios_phone.rb +23 -0
- data/lib/lib/platform/mobile/ios/ios_tablet/ios_tablet.rb +23 -0
- data/lib/lib/platform/mobile/mobile.rb +102 -0
- data/lib/lib/platform/passport/passport.rb +41 -0
- data/lib/lib/platform/passport/passport1080/passport_1080.rb +15 -0
- data/lib/lib/platform/passport/passport_720/passport_720.rb +14 -0
- data/lib/lib/platform/platform.rb +884 -0
- data/lib/lib/platform/roku/roku.rb +96 -0
- data/lib/lib/platform/roku/roku_720/roku_720.rb +16 -0
- data/lib/lib/platform/roku_tv/roku_tv.rb +33 -0
- data/lib/lib/platform/roku_tv/roku_tv_1080/roku_tv_1080.rb +14 -0
- data/lib/lib/platform/roku_tv/roku_tv_720/roku_tv_720.rb +14 -0
- data/lib/lib/platform/samsung_tv/samsung_tv.rb +31 -0
- data/lib/lib/platform/samsung_tv/samsung_tv_1080/samsung_tv_1080.rb +14 -0
- data/lib/lib/platform/samsung_tv/samsung_tv_720/samsung_tv_720.rb +14 -0
- data/lib/lib/platform/sara/sara.rb +42 -0
- data/lib/lib/platform/sara/sara_1080/sara_1080.rb +15 -0
- data/lib/lib/platform/sara/sara_720/sara_720.rb +15 -0
- data/lib/lib/platform/stb/iguide/iguide.rb +18 -0
- data/lib/lib/platform/stb/iguide/iguide_1080/iguide_1080.rb +14 -0
- data/lib/lib/platform/stb/iguide/iguide_720/iguide_720.rb +14 -0
- data/lib/lib/platform/stb/odn/odn.rb +480 -0
- data/lib/lib/platform/stb/odn/odn_1080/odn_1080.rb +14 -0
- data/lib/lib/platform/stb/odn/odn_720/odn_720.rb +14 -0
- data/lib/lib/platform/stb/odn/odn_720/odn_720_moto/odn_720_moto.rb +14 -0
- data/lib/lib/platform/stb/odn/odn_720/odn_720_sa/odn_720_sa.rb +14 -0
- data/lib/lib/platform/stb/odn/odn_720/odn_720_samsung/odn_720_samsung.rb +14 -0
- data/lib/lib/platform/stb/spectrum/spectrum.rb +48 -0
- data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080.rb +14 -0
- data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis/spectrum_1080_docsis.rb +16 -0
- data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis_arris/spectrum_1080_docsis_arris.rb +15 -0
- data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis_humax/spectrum_1080_docsis_humax.rb +15 -0
- data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_docsis_tch/spectrum_1080_docsis_tch.rb +15 -0
- data/lib/lib/platform/stb/spectrum/spectrum_1080/spectrum_1080_pace/spectrum_1080_pace.rb +14 -0
- data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720.rb +14 -0
- data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720_docsis_arris/spectrum_720_docsis_arris.rb +15 -0
- data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720_docsis_humax/spectrum_720_docsis_humax.rb +15 -0
- data/lib/lib/platform/stb/spectrum/spectrum_720/spectrum_720_docsis_tch/spectrum_720_docsis_tch.rb +15 -0
- data/lib/lib/platform/stb/stb.rb +93 -0
- data/lib/lib/platform/template.txt +16 -0
- data/lib/lib/platform/tivo/tivo.rb +28 -0
- data/lib/lib/platform/tivo/tivo_1080/tivo_1080.rb +15 -0
- data/lib/lib/platform/tivo/tivo_720/tivo_720.rb +14 -0
- data/lib/lib/platform/web/web.rb +51 -0
- data/lib/lib/platform_libs/roku/roku_controller.rb +254 -0
- data/lib/lib/prereqs/prereqs.rb +17 -0
- data/lib/lib/prereqs/prereqs_for_dut.rb +14 -0
- data/lib/lib/prereqs/prereqs_for_test.rb +14 -0
- data/lib/lib/remotes/remotes.rb +8 -0
- data/lib/lib/remotes/stb/spectrum/spectrum_remotes.rb +22 -0
- data/lib/lib/roi/black/black_roi.rb +125 -0
- data/lib/lib/roi/color/color_roi.rb +138 -0
- data/lib/lib/roi/image/image_roi.rb +187 -0
- data/lib/lib/roi/roi.rb +1064 -0
- data/lib/lib/roi/template_roi.txt +9 -0
- data/lib/lib/roi/text/text_roi.rb +187 -0
- data/lib/lib/roi/video/video_roi.rb +98 -0
- data/lib/lib/screen/screen.rb +183 -0
- data/lib/lib/screen/template.txt +7 -0
- data/lib/lib/screen/template_screen.txt +10 -0
- data/lib/lib/screens/apple_tv/apple_tv_screens.rb +44 -0
- data/lib/lib/screens/dta/dta_screens.rb +49 -0
- data/lib/lib/screens/mdn/mdn_screens.rb +49 -0
- data/lib/lib/screens/mobile/android/android_phone/android_phone_screens.rb +28 -0
- data/lib/lib/screens/mobile/android/android_screens.rb +40 -0
- data/lib/lib/screens/mobile/android/android_tablet/android_tablet_screens.rb +29 -0
- data/lib/lib/screens/mobile/ios/ios_phone/ios_phone_screens.rb +22 -0
- data/lib/lib/screens/mobile/ios/ios_screens.rb +39 -0
- data/lib/lib/screens/mobile/ios/ios_tablet/ios_tablet_screens.rb +20 -0
- data/lib/lib/screens/mobile/mobile_screens.rb +18 -0
- data/lib/lib/screens/passport/passport_screens.rb +42 -0
- data/lib/lib/screens/roku/roku_screens.rb +72 -0
- data/lib/lib/screens/roku_tv/roku_tv_screens.rb +43 -0
- data/lib/lib/screens/samsung_tv/samsung_tv_screens.rb +44 -0
- data/lib/lib/screens/sara/sara_screens.rb +49 -0
- data/lib/lib/screens/screens.rb +23 -0
- data/lib/lib/screens/stb/iguide/iguide_1080/iguide_1080_screens.rb +56 -0
- data/lib/lib/screens/stb/iguide/iguide_720/iguide_720_screens.rb +56 -0
- data/lib/lib/screens/stb/iguide/iguide_screens.rb +54 -0
- data/lib/lib/screens/stb/odn/odn_screens.rb +40 -0
- data/lib/lib/screens/stb/spectrum/spectrum_docsis/spectrum_1080_docsis_screens.rb +18 -0
- data/lib/lib/screens/stb/spectrum/spectrum_screens.rb +48 -0
- data/lib/lib/screens/stb/stb_screens.rb +13 -0
- data/lib/lib/screens/template.txt +52 -0
- data/lib/lib/screens/tivo/tivo_screens.rb +44 -0
- data/lib/lib/selenium/appium/appium.rb +388 -0
- data/lib/lib/selenium/selenium.rb +466 -0
- data/lib/lib/selenium/webdriver/webdriver.rb +254 -0
- data/lib/lib/test_case/boilerplate/functional.rb +7 -0
- data/lib/lib/test_case/boilerplate/performance.rb +7 -0
- data/lib/lib/test_case/ci_test.rb +47 -0
- data/lib/lib/test_case/functional_test_case.rb +27 -0
- data/lib/lib/test_case/make_boilerplate.rb +32 -0
- data/lib/lib/test_case/monitoring/apple_monitor.rb +104 -0
- data/lib/lib/test_case/monitoring/base_monitor.rb +140 -0
- data/lib/lib/test_case/monitoring/dta_monitor.rb +53 -0
- data/lib/lib/test_case/monitoring/iguide_monitor.rb +72 -0
- data/lib/lib/test_case/monitoring/mdn_monitor.rb +28 -0
- data/lib/lib/test_case/monitoring/monitoring_test.rb +111 -0
- data/lib/lib/test_case/monitoring/odn_monitor.rb +137 -0
- data/lib/lib/test_case/monitoring/passport_monitor.rb +50 -0
- data/lib/lib/test_case/monitoring/report_monitor.rb +178 -0
- data/lib/lib/test_case/monitoring/roku_monitor.rb +102 -0
- data/lib/lib/test_case/monitoring/sara_monitor.rb +33 -0
- data/lib/lib/test_case/monitoring/spec_monitor.rb +154 -0
- data/lib/lib/test_case/performance_test_case.rb +29 -0
- data/lib/lib/test_case/test_case.rb +1055 -0
- data/lib/lib/test_case/test_error.rb +29 -0
- data/lib/lib/test_case/test_exception.rb +9 -0
- data/lib/lib/test_case/test_status.rb +39 -0
- data/lib/lib/test_case/test_step.rb +156 -0
- data/lib/lib/test_case/test_trace.rb +80 -0
- data/lib/lib/test_data.rb +222 -0
- data/lib/lib/test_wrapper.rb +146 -0
- data/lib/misc/get_latest_android.sh +14 -0
- data/lib/misc/get_latest_ios.sh +14 -0
- data/lib/package-lock.json +3 -0
- data/lib/run_test.rb +4 -0
- data/lib/script_validator.rb +48 -0
- data/lib/syntax_eval.rb +151 -0
- data/lib/tools/convert_old_scripts.rb +100 -0
- data/lib/tools/find_duplicate_rois.rb +27 -0
- data/lib/tools/roku/inspector.rb +130 -0
- data/lib/tools/syntax_checker.rb +83 -0
- data/lib/upload_ref_images.rb +255 -0
- 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
|