From c243c36e4fd77bc44621062ee796229e9f00076b Mon Sep 17 00:00:00 2001 From: Bean Date: Mon, 15 Apr 2024 09:57:56 +0900 Subject: [PATCH] RD-213 implementation http proxy --- .editorconfig | 15 + README.md | 69 + build.gradle.kts | 10 + gradle/libs.versions.toml | 17 +- img.png | Bin 0 -> 11249 bytes img_1.png | Bin 0 -> 207044 bytes .../tv/anypoint/ApplicationProperties.kt | 21 +- .../tv/anypoint/domain/adb/ChangeCommand.kt | 6 + .../{dsl/model => domain}/adb/ExtraKey.kt | 2 +- .../{dsl/model => domain}/adb/IntentAction.kt | 3 +- .../tv/anypoint/domain/agent/AuthRequest.kt | 20 + .../tv/anypoint/domain/agent/AuthResponse.kt | 112 ++ .../kotlin/tv/anypoint/domain/agent/Cue.kt | 34 + .../tv/anypoint/domain/agent/CueOwner.kt | 14 + .../tv/anypoint/domain/agent/PlayType.kt | 7 + .../domain/agent/PlayerStateCheckParam.kt | 6 + .../domain/agent/ProgramProviderChannel.kt | 38 + .../anypoint/domain/agent/StateChangeLog.kt | 22 + .../kotlin/tv/anypoint/domain/agent/ad/Ad.kt | 28 + .../tv/anypoint/domain/agent/ad/AdRequest.kt | 31 + .../anypoint/domain/agent/ad/AdsResponse.kt | 14 + .../domain/agent/ad/AdsSyncRequest.kt | 9 + .../tv/anypoint/domain/agent/ad/Asset.kt | 14 + .../domain/agent/ad/AssetConvertResponse.kt | 3 + .../tv/anypoint/domain/agent/ad/Click.kt | 8 + .../domain/agent/ad/ProgramPlacement.kt | 21 + .../tv/anypoint/domain/agent/ad/TargetAd.kt | 27 + .../anypoint/domain/agent/ad/VastResponse.kt | 3 + src/main/kotlin/tv/anypoint/dsl/Dsl.kt | 11 +- .../dsl/exception/HttpValidationException.kt | 10 +- .../tv/anypoint/dsl/handler/HttpHandler.kt | 2 +- .../tv/anypoint/dsl/model/RecordingInfo.kt | 5 + src/main/kotlin/tv/anypoint/dsl/model/Tc.kt | 10 +- .../tv/anypoint/dsl/model/http/AdsResponse.kt | 6 - .../dsl/model/http/AssetConvertResponse.kt | 6 - .../anypoint/dsl/model/http/AuthResponse.kt | 6 - .../anypoint/dsl/model/http/VastResponse.kt | 6 - .../dsl/serialization/JsonConfiguration.kt | 19 + .../dsl/serialization/LocalDateSerializer.kt | 24 + .../serialization/LocalDateTimeSerializer.kt | 24 + .../tv/anypoint/dsl/service/TestCase.kt | 31 +- .../anypoint/proxy/adapter/DeviceV3Adapter.kt | 30 + .../tv/anypoint/proxy/service/NetworkUtil.kt | 127 ++ .../tv/anypoint/proxy/web/DeviceController.kt | 62 + src/main/kotlin/tv/anypoint/tc/Base1.kt | 19 +- src/main/kotlin/tv/anypoint/tc/Tc1.kt | 4 +- .../anypoint/{dsl => tc}/TestCaseStarter.kt | 23 +- src/main/resources/application.yaml | 17 +- .../tv/anypoint/androidqa/AdsResponseTest.kt | 4 + .../androidqa/AndroidQaApplicationTests.kt | 13 - .../androidqa/AssetConvertResponseTest.kt | 4 + .../tv/anypoint/androidqa/AuthResponseTest.kt | 25 + .../tv/anypoint/androidqa/VastResponseTest.kt | 4 + src/test/resources/ads-response.json | 98 + src/test/resources/asset-convert.json | 12 + src/test/resources/auth-response.json | 1580 +++++++++++++++++ src/test/resources/vast-response.xml | 64 + 57 files changed, 2705 insertions(+), 95 deletions(-) create mode 100644 .editorconfig create mode 100644 README.md create mode 100644 img.png create mode 100644 img_1.png create mode 100644 src/main/kotlin/tv/anypoint/domain/adb/ChangeCommand.kt rename src/main/kotlin/tv/anypoint/{dsl/model => domain}/adb/ExtraKey.kt (83%) rename src/main/kotlin/tv/anypoint/{dsl/model => domain}/adb/IntentAction.kt (74%) create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/AuthRequest.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/AuthResponse.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/Cue.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/CueOwner.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/PlayType.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/PlayerStateCheckParam.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ProgramProviderChannel.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/StateChangeLog.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/Ad.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/AdRequest.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/AdsResponse.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/AdsSyncRequest.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/Asset.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/AssetConvertResponse.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/Click.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/ProgramPlacement.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/TargetAd.kt create mode 100644 src/main/kotlin/tv/anypoint/domain/agent/ad/VastResponse.kt delete mode 100644 src/main/kotlin/tv/anypoint/dsl/model/http/AdsResponse.kt delete mode 100644 src/main/kotlin/tv/anypoint/dsl/model/http/AssetConvertResponse.kt delete mode 100644 src/main/kotlin/tv/anypoint/dsl/model/http/AuthResponse.kt delete mode 100644 src/main/kotlin/tv/anypoint/dsl/model/http/VastResponse.kt create mode 100644 src/main/kotlin/tv/anypoint/dsl/serialization/JsonConfiguration.kt create mode 100644 src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateSerializer.kt create mode 100644 src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateTimeSerializer.kt create mode 100644 src/main/kotlin/tv/anypoint/proxy/adapter/DeviceV3Adapter.kt create mode 100644 src/main/kotlin/tv/anypoint/proxy/service/NetworkUtil.kt create mode 100644 src/main/kotlin/tv/anypoint/proxy/web/DeviceController.kt rename src/main/kotlin/tv/anypoint/{dsl => tc}/TestCaseStarter.kt (76%) create mode 100644 src/test/kotlin/tv/anypoint/androidqa/AdsResponseTest.kt delete mode 100644 src/test/kotlin/tv/anypoint/androidqa/AndroidQaApplicationTests.kt create mode 100644 src/test/kotlin/tv/anypoint/androidqa/AssetConvertResponseTest.kt create mode 100644 src/test/kotlin/tv/anypoint/androidqa/AuthResponseTest.kt create mode 100644 src/test/kotlin/tv/anypoint/androidqa/VastResponseTest.kt create mode 100644 src/test/resources/ads-response.json create mode 100644 src/test/resources/asset-convert.json create mode 100644 src/test/resources/auth-response.json create mode 100644 src/test/resources/vast-response.xml diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6537ca4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/README.md b/README.md new file mode 100644 index 0000000..898b420 --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +## 프로젝트 구조 + +- domain: 순수한 도메인 관련 모델/기능 +- dsl: TC DSL 관련 정의와 기능들 +- proxy: 프록시 푸쉬 서버 관련 기능들 + - STB 에 system command 와 cue 송신 + - STB 의 auth, ads, vast, assetConvert 관련 HTTP 요청을 수신 + - QA 들이 apache 를 사용하여 하던 행위를 대체 + - TC 에서 HTTP 응답 변환이나 일시 정지, 딜레이가 필요할 경우 수행 +- tc: TC 테스터와 TC 정의들 + - 실제 TC 들을 정의 + - 정의된 TC 들을 수행 + +## 실행 방법 + +1. STB 대여 (아래 사항들 확인 필요함) + - STB 가 접속되는 AP 이름과 비밀번호 + - STB IP, adb 포트 번호 +1. STB 설치 + 1. 컴퓨터의 USB 에 캡쳐보드를 꼽고 캡쳐보드와 STB output 과 연결 + 1. 컴퓨터에 obs-studio 설치 및 실행 + 2. 왼쪽 하단의 Sources 의 + 버튼(add sources) 클릭 + + ![img.png](img.png) + 3. video capture device(V4L2) (리눅스 기준) 클릭 + 4. 디바이스를 바꿔가면서 STB 를 찾아 선택 후 OK 클릭 + + ![img_1.png](img_1.png) + +1. application.yml 에서 anypoint.android-qa.stb 하위 정보들을 STB 의 정보로 수정 +1. obs-studio 종료 후 android-qa 애플리케이션 실행 (obs-studio 종료해야 정상 작동됨) + +## TC 수행 순서 + +1. adb 를 사용하여 STB 이 프록시 서버를 바라보도록 변경 + ```shell + adb shell am broadcast -a tv.anypoint.agent.app.CHANGE_TEST_PROPERTY --es change.command CHANGE_API_ENDPOINT --es api.endpoint http://: + ``` +1. + +## ffmpeg 리눅스에서 사용 방법 + +v4l2(video4linux2) 를 사용하여 캡쳐보드의 devicePath 구하기 + +```shell +$ v4l2-ctl --list-devices +Integrated Camera: Integrated C (usb-0000:00:14.0-8): +/dev/video0 +/dev/video1 +/dev/video2 +/dev/video3 +/dev/media0 +/dev/media1 + +USB Video: USB Video (usb-0000:09:00.0-2.4): +/dev/video5 +/dev/video6 +/dev/media3 +``` + +- 비디오: -f video4linux2 -i `` 의 형식으로 입력. +- 오디오: -f alsa -ac 2 -i default 만 넣어도 되는데 캡쳐보드 전체가 동일한 지는 확인 안해 봄 + +아래 예제 참고 + +```shell +$ ffmpeg -f video4linux2 -i /dev/video5 -f alsa -ac 2 -i default -b:v 10M -vcodec h264_nvenc -pixel_format yuv420p -rtbufsize 1000M output_new_captureboard_30fps.mp4 +``` + diff --git a/build.gradle.kts b/build.gradle.kts index 5eede32..346e554 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -21,10 +21,20 @@ repositories { dependencies { implementation("org.springframework.boot:spring-boot-starter") + implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.springframework.cloud:spring-cloud-starter-openfeign") implementation("org.jetbrains.kotlin:kotlin-reflect") + testImplementation("org.springframework.boot:spring-boot-starter-test") implementation(libs.bundles.deps) + testImplementation(libs.bundles.test.deps) +} + +dependencyManagement { + imports { + mavenBom("org.springframework.cloud:spring-cloud-dependencies:2023.0.1") + } } tasks.withType { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 31d7f4f..2fe63f0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,18 +5,27 @@ kotlin = "1.9.23" jadb = { module = "com.github.vidstige:jadb", version = "v1.2.1" } # adb netty = { module = "io.netty:netty-all", version = "4.1.96.Final" } kotlinx-serializable = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.6.0" } -kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version = "0.5.0" } +kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.8.0" } kotlin-logging = { module = "io.github.microutils:kotlin-logging-jvm", version = "2.0.11" } thymeleaf = { module = "org.thymeleaf:thymeleaf", version = "3.1.2.RELEASE" } thymeleaf-spring5 = { module = "org.thymeleaf:thymeleaf-spring5", version = "3.1.2.RELEASE" } +kotest-runner = { module = "io.kotest:kotest-runner-junit5-jvm", version = "5.8.1" } +kotest-property = { module = "io.kotest:kotest-property", version = "5.8.1" } +kotest-extensions-string = { module = "io.kotest.extensions:kotest-extensions-spring", version = "1.1.3" } + [bundles] deps = [ "jadb", "netty", "kotlinx-serializable", - "kotlinx-datetime", "kotlin-logging", "thymeleaf", - "thymeleaf-spring5" -] \ No newline at end of file + "thymeleaf-spring5", + "kotlinx-coroutines" +] +test-deps = [ + "kotest-runner", + "kotest-property", + "kotest-extensions-string" +] diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..8199986d2e705ed60ca7dad29bf1331978efb7a3 GIT binary patch literal 11249 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 zℑ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 icgYv}dtH#0?2e7K = emptyList(), + val adConfig: AdConfig = AdConfig(), + var chViewMinTime: Int = 0, + var kidWatermark: KidWatermark? = null, + val accessToken: String? = null, + val pushSecretKey: String = "Tx?c)T!3e.52Th5J", + val storeAppId: String? = null, +) { + + companion object { + val DEFAULT_MONITOR_PERIOD = TimeUnit.MINUTES.toMillis(3) + private val MINIMUM_MONITOR_INTERVAL = TimeUnit.SECONDS.toMillis(30) + } + + fun authorization() = "Anypoint ${accessToken ?: ""}" + + fun monitoringInterval() = monitoringInterval.let { + if (it < MINIMUM_MONITOR_INTERVAL) DEFAULT_MONITOR_PERIOD else it + } +} + +data class Endpoints( + var auth: String = "", + var requestAds: String = "", + var adSyncResult: String = "", + var appLog: String = "", + var event: String = "", + var pushServers: List = emptyList(), + var stateLog: String = "", + var impressionLog: String = "", + var ntpServers: List = emptyList(), + var assetRequest: String = "", + var proxyAdLog: String = "", + var externalDeviceMessageHost: String = "", + var externalDeviceMessagePort: Int = 0 +) + +enum class VideoPlayMode { + SERIALIZED, PARALLEL +} + +enum class VideoMediaType { + CONCATENATING, LEGACY +} + +// WARNING: local db(data class Device)의 Embedded 엔티티이므로 프로퍼티 변경 시, db 버전 올려야 함 +data class AdConfig( + var maxDownloadBandwidth: Long = 150 * 1024, + var maxLazyDownloadBandwidth: Long = 1024 * 1024, + var appPath: String = "", + var maxUsableStorage: Long = 0, + var minFreeStorage: Long = 100 * 1024 * 1024, + var trackingRetryInterval: Int = 0, + var trackingRetryCount: Int = 0, + /** + * 남은 광고 시간 허용 기준 (해당 값 이하인 경우는 마지막 프레임을 유지하는 형태) 단위: 초 + */ + var remnantTimeThreshold: Int = 2_000, + var maxEndAdPlaytime: Int = 15_000, + var transitionDelay: Int = 0, + var videoPlayMode: VideoPlayMode = VideoPlayMode.PARALLEL, + var videoMediaType: VideoMediaType = VideoMediaType.CONCATENATING, + var startDelay: Int = 0, + var stopDelay: Int = 0, + var startRenderDelay: Int = 0, + var stopRenderDelay: Int = 0, + var overPlayTimeThreshold: Int = 0, + // (플레이 리스트의 1번째 소재가 플레이 완료되기 전 x초) + // 해당 시간 전까지 준비 완료가 안되면 대체 소재로 플레이 + // sdk 사용시 player의 버퍼 시간보다 1초 이상 커야 한다 + // (sdk 내장 플레이어는 현재 3초) + var continuousCueMarginTime: Int = 34, // 연속 큐로 간주하기 위한 최대 cue gap + var minAdPlayAvailableMemMB: Int = 0, + var useSdkDigitalCue: Boolean = true, + var minCueGap: Int = TimeUnit.SECONDS.toMillis(5).toInt(), + var maxCueOutDelay: Int = TimeUnit.SECONDS.toMillis(15).toInt(), + var maxCueDuration: Int = TimeUnit.MINUTES.toMillis(10).toInt(), + var playerStateCheckParam: PlayerStateCheckParam = PlayerStateCheckParam(), + var useLastPositionGoogleAd: Boolean = false, + var retainedChannelStream: Boolean = true, + val maxAssignLoop: Int = 20, + val onCueCachingTimeWeight: Float = 0.5f, + var allowedUnfilledPlaylist: Boolean = false, + var allowedFirstUnreadyAd: Boolean = false, + var onceAdReadyResponse: Boolean = true, + var onceAdReadyRequiredTime: Int = 1000, + var minRequestAdDuration: Int = 5_000, + var sendBeaconFireResult: Boolean = false, + var onPlayDelay: Int = 0, + var skipOffset: Int = 5_000, + val useMultipleAssetConvert: Boolean = false, +) + +// WARNING: local db(data class Device)의 Embedded 엔티티이므로 프로퍼티 변경 시, db 버전 올려야 함 +data class KidWatermark( + var imageUrl: String = "", + var crc: Long = 0, + var left: Int = 0, + var top: Int = 0, + var width: Int = 0, + var height: Int = 0 +) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/domain/agent/Cue.kt b/src/main/kotlin/tv/anypoint/domain/agent/Cue.kt new file mode 100644 index 0000000..a002159 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/Cue.kt @@ -0,0 +1,34 @@ +package tv.anypoint.domain.agent + +data class Cue( + var id: Long = 0, + var ppId: Int = 0, + /** 큐 시작 시각 (ms) */ + var time: Long = 0, + /** 큐 길이 (ms) */ + var duration: Int = 0, + var type: CueType = CueType.NORMAL, + var placementId: Int = 0, + var startPts: Long = 0, + var multicastUri: String = "", + var isPushCue: Boolean = false, + var owner: CueOwner = CueOwner.OTT +) { + /** 큐 종료 시각 (ms) = [time] + [duration] */ + val endTime: Long + get() = time + duration +} + +enum class CueType(val v: Byte) { + INVALID_CUE_TYPE(Byte.MIN_VALUE), + NORMAL(0), + CANCEL(1), + REPLACE(2) + ; + + companion object { + operator fun get(v: Byte): CueType { + return values().find { it.v == v } ?: INVALID_CUE_TYPE + } + } +} diff --git a/src/main/kotlin/tv/anypoint/domain/agent/CueOwner.kt b/src/main/kotlin/tv/anypoint/domain/agent/CueOwner.kt new file mode 100644 index 0000000..224eb57 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/CueOwner.kt @@ -0,0 +1,14 @@ +package tv.anypoint.domain.agent + +enum class CueOwner { + PP, + SO, + OTT + ; + + companion object { + fun fromCode(code: Int): CueOwner { + return CueOwner.values().last { it.ordinal == code } + } + } +} diff --git a/src/main/kotlin/tv/anypoint/domain/agent/PlayType.kt b/src/main/kotlin/tv/anypoint/domain/agent/PlayType.kt new file mode 100644 index 0000000..e923051 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/PlayType.kt @@ -0,0 +1,7 @@ +package tv.anypoint.domain.agent + +enum class PlayType { + DNP, + LAZY_DNP, + STREAMING +} \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/domain/agent/PlayerStateCheckParam.kt b/src/main/kotlin/tv/anypoint/domain/agent/PlayerStateCheckParam.kt new file mode 100644 index 0000000..f334fa4 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/PlayerStateCheckParam.kt @@ -0,0 +1,6 @@ +package tv.anypoint.domain.agent + +data class PlayerStateCheckParam( + val playerStateCheckDuration: Int = 1500, + val maxPlayerInvalidateInterval: Int = 300 +) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ProgramProviderChannel.kt b/src/main/kotlin/tv/anypoint/domain/agent/ProgramProviderChannel.kt new file mode 100644 index 0000000..c737536 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ProgramProviderChannel.kt @@ -0,0 +1,38 @@ +package tv.anypoint.domain.agent + +data class ProgramProviderChannel( + val id: Int, + val delay: Int = 0, + val scte35Delay: Int = 0, + val serviceId: String, + val kid: Boolean = false, + /** 없을 경우 service 채널 아님 */ + val placementIds: IntArray? = null, + val testPlacementIds: IntArray? = null, + val taxonomies: List? = null, +) { + var recordId: Int = 0 + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + other as ProgramProviderChannel + if (id != other.id) return false + if (delay != other.delay) return false + if (serviceId != other.serviceId) return false + if (kid != other.kid) return false + if (placementIds != null) { + if (other.placementIds == null) return false + if (!placementIds.contentEquals(other.placementIds)) return false + } else if (other.placementIds != null) return false + return true + } + + override fun hashCode(): Int { + var result = id + result = 31 * result + delay + result = 31 * result + serviceId.hashCode() + result = 31 * result + kid.hashCode() + result = 31 * result + (placementIds?.contentHashCode() ?: 0) + return result + } +} diff --git a/src/main/kotlin/tv/anypoint/domain/agent/StateChangeLog.kt b/src/main/kotlin/tv/anypoint/domain/agent/StateChangeLog.kt new file mode 100644 index 0000000..f6167c8 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/StateChangeLog.kt @@ -0,0 +1,22 @@ +package tv.anypoint.domain.agent + +data class StateChangeLog( + val soId: Int = 0, + val deviceId: Long = 0, + val previousState: State? = null, + var currentState: State? = null +) + +data class State( + val inTime: Long, + val outTime: Long? = null, + var state: TvState = TvState.ETC, + var appId: String? = null, + val channelServiceId: String? = null, + val vodTitle: String? = null, + var isCompleted: Boolean = false +) + +enum class TvState { + HOME, LINEAR_TV, VOD, APP, SLEEP, ETC +} diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/Ad.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/Ad.kt new file mode 100644 index 0000000..194a00b --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/Ad.kt @@ -0,0 +1,28 @@ +package tv.anypoint.domain.agent.ad + +data class Ad( + val id: Long, + val adRequest: AdRequest? = null, + var asset: Asset? = null, + val campaignId: Long = 0, + val campaignType: CampaignType = CampaignType.CHARGE, + val viewSequence: Int = 0, + var paused: Boolean = false, + var price: Float? = null, + var priceModel: String? = null, + var priceCurrency: String? = null, + val startAt: Long = 0, + val endAt: Long = 0, + val extraPlay: Int = 0, + val extraPlayContinuous: Boolean = false, + val click: Click? = null, + val exclusiveAdIds: Set? = null +) + +enum class CampaignType { + CHARGE, + FREE, + HOUSE, + BUFFER, + ENDING +} \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/AdRequest.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/AdRequest.kt new file mode 100644 index 0000000..8eed862 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/AdRequest.kt @@ -0,0 +1,31 @@ +package tv.anypoint.domain.agent.ad + +import tv.anypoint.domain.agent.PlayType + + +enum class EncodingType { + NONE, + MANUAL, + AUTO +} + +enum class ExtAdProtocol { + VAST, + GOOGLE_AD +} + +data class AdRequest( + var url: String, + val updateInterval: Int = 0, + val timeout: Int = 1000, + val encodingType: EncodingType = EncodingType.AUTO, + val extPlatformMappingId: Long = 0, + val onCue: Boolean = false, + var protocol: ExtAdProtocol = ExtAdProtocol.VAST, + val assetPlayType: PlayType = PlayType.DNP, // android room, field name duplication 방지 + var maxDuration: Int = 15_000, + var minDuration: Int = 3_000, + val headers: Map? = null, + var fallbackUrl: String? = null, + val fallbackProtocol: ExtAdProtocol = ExtAdProtocol.VAST, +) diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/AdsResponse.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/AdsResponse.kt new file mode 100644 index 0000000..eb05383 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/AdsResponse.kt @@ -0,0 +1,14 @@ +package tv.anypoint.domain.agent.ad + +data class AdsResponse( + val status: AdListResponseStatus = AdListResponseStatus.OK, + val ads: List = listOf(), + val targetAds: List = listOf(), + val deleteCache: Boolean = false, +) + +enum class AdListResponseStatus { + OK, + ERROR, + IGNORE_ERROR +} diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/AdsSyncRequest.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/AdsSyncRequest.kt new file mode 100644 index 0000000..daebc73 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/AdsSyncRequest.kt @@ -0,0 +1,9 @@ +package tv.anypoint.domain.agent.ad + +data class AdsSyncRequest( + val deviceId: Long, + val freeStorage: Long, + val usedStorage: Long, + val cachedStorage: Long, + val adIds: List +) diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/Asset.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/Asset.kt new file mode 100644 index 0000000..2c313b3 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/Asset.kt @@ -0,0 +1,14 @@ +package tv.anypoint.domain.agent.ad + +import tv.anypoint.domain.agent.PlayType + +data class Asset( + var assetId: Long = 0L, + var crc: String = "0", + var mediaUrl: String = "", + /** In milliseconds */ + var duration: Int = 0, + var bytes: Long = 0, + var playType: PlayType = PlayType.DNP, + var extendedQueryString: String = "" +) diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/AssetConvertResponse.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/AssetConvertResponse.kt new file mode 100644 index 0000000..b1829b2 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/AssetConvertResponse.kt @@ -0,0 +1,3 @@ +package tv.anypoint.domain.agent.ad + +data class AssetConvertResponse(val id: Long) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/Click.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/Click.kt new file mode 100644 index 0000000..aa55ef3 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/Click.kt @@ -0,0 +1,8 @@ +package tv.anypoint.domain.agent.ad + +data class Click( + val targetType: String, + val targetValue: String, + val startDelay: Int = 0, + val endDelay: Int = 0 +) diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/ProgramPlacement.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/ProgramPlacement.kt new file mode 100644 index 0000000..f2e2445 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/ProgramPlacement.kt @@ -0,0 +1,21 @@ +package tv.anypoint.domain.agent.ad + +data class ProgramPlacement( + val id: Int, + val placementUniqueKey: PlacementUniqueKey, + val durationInMs: Long, + val mediaType: MediaType, + val test: Boolean +) + +data class PlacementUniqueKey( + val mediaId: Int, + val contentId: Int, + val programId: Int, + val platformId: Int, + val contentVendorId: String? = null +) + +enum class MediaType { + SO, PP +} \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/TargetAd.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/TargetAd.kt new file mode 100644 index 0000000..11b0555 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/TargetAd.kt @@ -0,0 +1,27 @@ +package tv.anypoint.domain.agent.ad + + +data class TargetAd( + val hours: String? = null, + val days: String? = null, + val adIds: String, + var placements: String? = null +) { + companion object { + fun from( + hours: Set = (0..23).toSet(), + days: Set = (1..7).toSet(), + placements: Set = emptySet(), + adIds: Set = emptySet() + ) = TargetAd( + hours = hours.joinWithVerticalBar(), + days = days.joinWithVerticalBar(), + placements = placements + .map { "${it.placementUniqueKey.contentId}-${it.placementUniqueKey.programId}" } + .joinWithVerticalBar(), + adIds = adIds.joinWithVerticalBar() + ) + } +} + +private fun Iterable.joinWithVerticalBar() = this.joinToString(prefix = "|", postfix = "|", separator = "|") diff --git a/src/main/kotlin/tv/anypoint/domain/agent/ad/VastResponse.kt b/src/main/kotlin/tv/anypoint/domain/agent/ad/VastResponse.kt new file mode 100644 index 0000000..8d2d897 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/domain/agent/ad/VastResponse.kt @@ -0,0 +1,3 @@ +package tv.anypoint.domain.agent.ad + +data class VastResponse(val id: Long) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/Dsl.kt b/src/main/kotlin/tv/anypoint/dsl/Dsl.kt index b2e40de..64ccb0d 100644 --- a/src/main/kotlin/tv/anypoint/dsl/Dsl.kt +++ b/src/main/kotlin/tv/anypoint/dsl/Dsl.kt @@ -1,22 +1,19 @@ package tv.anypoint.dsl +import tv.anypoint.domain.adb.ExtraKey +import tv.anypoint.domain.adb.IntentAction import tv.anypoint.dsl.handler.HttpHandler -import tv.anypoint.dsl.model.adb.ExtraKey -import tv.anypoint.dsl.model.adb.IntentAction import tv.anypoint.dsl.model.Tc import tv.anypoint.dsl.service.TestCase -import java.time.Duration import java.time.LocalDateTime -import java.time.Period import java.time.temporal.ChronoUnit -import java.util.concurrent.TimeUnit import java.util.concurrent.TimeoutException inline fun tc( block: Tc.() -> Unit ) = Tc().also { block(it) } -inline fun http( +inline fun http( block: HttpHandler.() -> Unit ) = HttpHandler().also { block(it) } @@ -47,4 +44,4 @@ fun TestCase.expected( } // TODO: tc 로그에서 expectedLog 찾기 tc.logInfo.cursor ~ 마지막 라인까지의 로그 중에 찾으면 됨 } -} \ No newline at end of file +} diff --git a/src/main/kotlin/tv/anypoint/dsl/exception/HttpValidationException.kt b/src/main/kotlin/tv/anypoint/dsl/exception/HttpValidationException.kt index f3f99fc..76dadca 100644 --- a/src/main/kotlin/tv/anypoint/dsl/exception/HttpValidationException.kt +++ b/src/main/kotlin/tv/anypoint/dsl/exception/HttpValidationException.kt @@ -3,10 +3,10 @@ package tv.anypoint.dsl.exception import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.encodeToJsonElement -import tv.anypoint.dsl.model.http.AdsResponse -import tv.anypoint.dsl.model.http.AssetConvertResponse -import tv.anypoint.dsl.model.http.AuthResponse -import tv.anypoint.dsl.model.http.VastResponse +import tv.anypoint.domain.agent.AuthResponse +import tv.anypoint.domain.agent.ad.AdsResponse +import tv.anypoint.domain.agent.ad.AssetConvertResponse +import tv.anypoint.domain.agent.ad.VastResponse class HttpValidationException( type: HttpValidationExceptionType, @@ -26,7 +26,7 @@ enum class HttpValidationExceptionType { inline fun httpValidationError( response: T ): HttpValidationException = HttpValidationException( - type = when(T::class) { + type = when (T::class) { AuthResponse::class -> HttpValidationExceptionType.AUTH AdsResponse::class -> HttpValidationExceptionType.ADS VastResponse::class -> HttpValidationExceptionType.VAST diff --git a/src/main/kotlin/tv/anypoint/dsl/handler/HttpHandler.kt b/src/main/kotlin/tv/anypoint/dsl/handler/HttpHandler.kt index 5d852b9..613b58f 100644 --- a/src/main/kotlin/tv/anypoint/dsl/handler/HttpHandler.kt +++ b/src/main/kotlin/tv/anypoint/dsl/handler/HttpHandler.kt @@ -1,6 +1,6 @@ package tv.anypoint.dsl.handler -class HttpHandler ( +class HttpHandler( var convert: (response: R) -> R = { it }, var validate: (response: R) -> Boolean = { true } ) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/model/RecordingInfo.kt b/src/main/kotlin/tv/anypoint/dsl/model/RecordingInfo.kt index e6af6d2..93280ba 100644 --- a/src/main/kotlin/tv/anypoint/dsl/model/RecordingInfo.kt +++ b/src/main/kotlin/tv/anypoint/dsl/model/RecordingInfo.kt @@ -1,10 +1,14 @@ package tv.anypoint.dsl.model +import kotlinx.serialization.Contextual +import kotlinx.serialization.Serializable import java.time.LocalDateTime +@Serializable data class RecordingInfo( val absoluteFilePath: String ) { + @Contextual private val createdAt: LocalDateTime = LocalDateTime.now() /** @@ -12,6 +16,7 @@ data class RecordingInfo( */ private var fileSize: Long = 0 + @Contextual private var finishedAt: LocalDateTime? = null fun finish(fileSize: Long) { diff --git a/src/main/kotlin/tv/anypoint/dsl/model/Tc.kt b/src/main/kotlin/tv/anypoint/dsl/model/Tc.kt index 75d316d..b2901c3 100644 --- a/src/main/kotlin/tv/anypoint/dsl/model/Tc.kt +++ b/src/main/kotlin/tv/anypoint/dsl/model/Tc.kt @@ -1,15 +1,15 @@ package tv.anypoint.dsl.model +import tv.anypoint.domain.agent.AuthResponse +import tv.anypoint.domain.agent.ad.AdsResponse +import tv.anypoint.domain.agent.ad.AssetConvertResponse +import tv.anypoint.domain.agent.ad.VastResponse import tv.anypoint.dsl.handler.HttpHandler import tv.anypoint.dsl.http -import tv.anypoint.dsl.model.http.AdsResponse -import tv.anypoint.dsl.model.http.AssetConvertResponse -import tv.anypoint.dsl.model.http.AuthResponse -import tv.anypoint.dsl.model.http.VastResponse import java.time.LocalDateTime class Tc { - var number: Int? = null + var number: String? = null var reboot: Boolean = false var auth: HttpHandler = http {} diff --git a/src/main/kotlin/tv/anypoint/dsl/model/http/AdsResponse.kt b/src/main/kotlin/tv/anypoint/dsl/model/http/AdsResponse.kt deleted file mode 100644 index 4761320..0000000 --- a/src/main/kotlin/tv/anypoint/dsl/model/http/AdsResponse.kt +++ /dev/null @@ -1,6 +0,0 @@ -package tv.anypoint.dsl.model.http - -import kotlinx.serialization.Serializable - -@Serializable -data class AdsResponse(val id: Long) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/model/http/AssetConvertResponse.kt b/src/main/kotlin/tv/anypoint/dsl/model/http/AssetConvertResponse.kt deleted file mode 100644 index bd385bd..0000000 --- a/src/main/kotlin/tv/anypoint/dsl/model/http/AssetConvertResponse.kt +++ /dev/null @@ -1,6 +0,0 @@ -package tv.anypoint.dsl.model.http - -import kotlinx.serialization.Serializable - -@Serializable -data class AssetConvertResponse(val id: Long) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/model/http/AuthResponse.kt b/src/main/kotlin/tv/anypoint/dsl/model/http/AuthResponse.kt deleted file mode 100644 index 6a6f722..0000000 --- a/src/main/kotlin/tv/anypoint/dsl/model/http/AuthResponse.kt +++ /dev/null @@ -1,6 +0,0 @@ -package tv.anypoint.dsl.model.http - -import kotlinx.serialization.Serializable - -@Serializable -data class AuthResponse(val id: Long) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/model/http/VastResponse.kt b/src/main/kotlin/tv/anypoint/dsl/model/http/VastResponse.kt deleted file mode 100644 index 1ea8e67..0000000 --- a/src/main/kotlin/tv/anypoint/dsl/model/http/VastResponse.kt +++ /dev/null @@ -1,6 +0,0 @@ -package tv.anypoint.dsl.model.http - -import kotlinx.serialization.Serializable - -@Serializable -data class VastResponse(val id: Long) \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/serialization/JsonConfiguration.kt b/src/main/kotlin/tv/anypoint/dsl/serialization/JsonConfiguration.kt new file mode 100644 index 0000000..2a6beed --- /dev/null +++ b/src/main/kotlin/tv/anypoint/dsl/serialization/JsonConfiguration.kt @@ -0,0 +1,19 @@ +package tv.anypoint.dsl.serialization + +import kotlinx.serialization.json.Json +import kotlinx.serialization.modules.SerializersModule +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import java.time.LocalDate +import java.time.LocalDateTime + +@Configuration +class JsonConfiguration { + @Bean + fun json(): Json = Json { + serializersModule = SerializersModule { + contextual(LocalDate::class, LocalDateSerializer()) + contextual(LocalDateTime::class, LocalDateTimeSerializer()) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateSerializer.kt b/src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateSerializer.kt new file mode 100644 index 0000000..54e8061 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateSerializer.kt @@ -0,0 +1,24 @@ +package tv.anypoint.dsl.serialization + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializer +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import java.time.LocalDate + +@OptIn(ExperimentalSerializationApi::class) +@Suppress("EXTERNAL_SERIALIZER_USELESS") +@Serializer(forClass = LocalDate::class) +class LocalDateSerializer : KSerializer { + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDate", PrimitiveKind.STRING) + + override fun serialize(encoder: Encoder, value: LocalDate) { + encoder.encodeString(value.toString()) + } + + override fun deserialize(decoder: Decoder): LocalDate = LocalDate.parse(decoder.decodeString()) +} \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateTimeSerializer.kt b/src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateTimeSerializer.kt new file mode 100644 index 0000000..b0ece5d --- /dev/null +++ b/src/main/kotlin/tv/anypoint/dsl/serialization/LocalDateTimeSerializer.kt @@ -0,0 +1,24 @@ +package tv.anypoint.dsl.serialization + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializer +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import java.time.LocalDateTime + +@OptIn(ExperimentalSerializationApi::class) +@Suppress("EXTERNAL_SERIALIZER_USELESS") +@Serializer(forClass = LocalDateTime::class) +class LocalDateTimeSerializer : KSerializer { + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDateTime", PrimitiveKind.STRING) + + override fun serialize(encoder: Encoder, value: LocalDateTime) { + encoder.encodeString(value.toString()) + } + + override fun deserialize(decoder: Decoder): LocalDateTime = LocalDateTime.parse(decoder.decodeString()) +} \ No newline at end of file diff --git a/src/main/kotlin/tv/anypoint/dsl/service/TestCase.kt b/src/main/kotlin/tv/anypoint/dsl/service/TestCase.kt index 95f5044..5c989cb 100644 --- a/src/main/kotlin/tv/anypoint/dsl/service/TestCase.kt +++ b/src/main/kotlin/tv/anypoint/dsl/service/TestCase.kt @@ -4,13 +4,13 @@ import mu.KLogging import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Component import tv.anypoint.ApplicationProperties +import tv.anypoint.domain.agent.AuthResponse +import tv.anypoint.domain.agent.ad.AdsResponse +import tv.anypoint.domain.agent.ad.AssetConvertResponse +import tv.anypoint.domain.agent.ad.VastResponse import tv.anypoint.dsl.exception.httpValidationError import tv.anypoint.dsl.model.LogInfo import tv.anypoint.dsl.model.RecordingInfo -import tv.anypoint.dsl.model.http.AdsResponse -import tv.anypoint.dsl.model.http.AssetConvertResponse -import tv.anypoint.dsl.model.http.AuthResponse -import tv.anypoint.dsl.model.http.VastResponse import tv.anypoint.dsl.model.Tc import java.time.LocalDateTime @@ -32,18 +32,19 @@ abstract class TestCase { private lateinit var captureBoardRecorder: CaptureBoardRecorder fun executeTest() { + startToDumpLog() tc = init() - logger.info("[TC-${tc.number}] starting...") + logger.info("[${tc.number}] starting...") try { if (tc.reboot) { - logger.info("[TC-${tc.number}] reboot STB") + logger.info("[${tc.number}] reboot STB") // TODO } else { - logger.info("[TC-${tc.number}] get systemInfo STB") + logger.info("[${tc.number}] get systemInfo STB") // TODO } - startToDumpLog() + auth() ads() @@ -55,23 +56,23 @@ abstract class TestCase { stopToDumpLog() } catch (e: Exception) { - logger.error("[TC-${tc.number}] FAILED!! ${e.message}", e) + logger.error("[${tc.number}] FAILED!! ${e.message}", e) tc.result = false return } finally { tc.finishedAt = LocalDateTime.now() } - logger.info("[TC-${tc.number}] SUCCEED!!") + logger.info("[${tc.number}] SUCCEED!!") tc.result = true } private fun startToDumpLog() { - tc.logInfo = LogInfo("${applicationProperties.filePath}/TC-${tc.number}.log") - // TODO 이 함수 호출된 후 main.log 에서 쌓이는 로그를 TC-${tc.number}.log 파일 새로 만들어서 적재 시작 + tc.logInfo = LogInfo("${applicationProperties.fileRoot}/${tc.number}.log") + // TODO 이 함수 호출된 후 main.log 에서 쌓이는 로그를 ${tc.number}.log 파일 새로 만들어서 적재 시작 } private fun stopToDumpLog() { - // TODO main.log >> TC-${tc.number}.log 적재 종료 + // TODO main.log >> ${tc.number}.log 적재 종료 } private fun auth() { @@ -86,7 +87,7 @@ abstract class TestCase { private fun ads() { // TODO: auth - val actualResponse = AdsResponse(0) + val actualResponse = AdsResponse() val response = tc.ads.convert(actualResponse) if (!tc.ads.validate(response)) { throw httpValidationError(response) @@ -115,7 +116,7 @@ abstract class TestCase { } private fun startRecording(tc: Tc) { - tc.recordingInfo = RecordingInfo("${applicationProperties.filePath}/TC-${tc.number}.mp4") + tc.recordingInfo = RecordingInfo("${applicationProperties.fileRoot}/${tc.number}.mp4") logger.debug("start to record. info: {}", tc.recordingInfo) // TODO } diff --git a/src/main/kotlin/tv/anypoint/proxy/adapter/DeviceV3Adapter.kt b/src/main/kotlin/tv/anypoint/proxy/adapter/DeviceV3Adapter.kt new file mode 100644 index 0000000..83916ce --- /dev/null +++ b/src/main/kotlin/tv/anypoint/proxy/adapter/DeviceV3Adapter.kt @@ -0,0 +1,30 @@ +package tv.anypoint.proxy.adapter + +import org.springframework.cloud.openfeign.FeignClient +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestParam +import tv.anypoint.domain.agent.AuthRequest +import tv.anypoint.domain.agent.AuthResponse +import tv.anypoint.domain.agent.ad.AdsResponse +import tv.anypoint.domain.agent.ad.AdsSyncRequest + + +@FeignClient( + name = "DeviceV3Adapter", + path = "/v3/device" +) +interface DeviceV3Adapter { + @PostMapping("/auth") + fun auth(@RequestBody body: AuthRequest): AuthResponse + + @PostMapping("/ads") + fun ads( + @RequestParam(required = true) deviceId: Long, + @RequestParam("freeStorage", required = true, defaultValue = "0") freeStorage: Long = 0, + @RequestParam("usedStorage", required = true, defaultValue = "0") usedStorage: Long = 0 + ): AdsResponse + + @PostMapping("/sync/ads") + fun syncAds(@RequestBody request: AdsSyncRequest) +} diff --git a/src/main/kotlin/tv/anypoint/proxy/service/NetworkUtil.kt b/src/main/kotlin/tv/anypoint/proxy/service/NetworkUtil.kt new file mode 100644 index 0000000..e0ce2f4 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/proxy/service/NetworkUtil.kt @@ -0,0 +1,127 @@ +package tv.anypoint.proxy.service + +import jakarta.servlet.http.HttpServletRequest +import kotlinx.coroutines.* +import java.net.Inet4Address +import java.net.InetAddress +import java.net.NetworkInterface +import java.util.* + +object NetworkUtil { + fun getPrivateIpV4(setTopBoxAddress: InetAddress): String = getPrivateIpV4List() + .chooseSimilarIp(setTopBoxAddress)?.hostAddress + ?: throw RuntimeException() + + /** + * Gives the private IP of this device + * @return The private IP + */ + fun getPrivateIpV4List(): List { + val result = mutableListOf() + NetworkInterface.getNetworkInterfaces().forEach { n -> + result += n.inetAddresses.filter { it is Inet4Address && it.isSiteLocalAddress } + } + return result + } + + /** + * Gives the list of all open IPs of the private network + * in which this device is connected to. + * + * For the time saving, this method performs multithreaded + * ping test for 5 seconds in each thread, excluding + * 192.168.0.1 and this device's private IP. + * + * @return List of all open IPs as [InetAddress] + */ + fun findAllOpenPrivateIps(skipSelf: Boolean = false) = runBlocking { + val todos = mutableListOf>() + val privateIpList = getPrivateIpV4List() + val available2dArray = Array(privateIpList.size) { arrayOfNulls(256) } + + privateIpList.forEachIndexed { i, inetAddress -> + todos += Inet4Iterator(inetAddress, skipSelf) + .map { + async(Dispatchers.IO) { + if (it.second.isReachable(1000)) available2dArray[i][it.first] = it.second else null + } + } + } + + todos.awaitAll() + return@runBlocking available2dArray.flatten().filterNotNull() + } + + /** + * The iterator that iterates all near IPs from the given [originalIp] + * + * If the given IP is a.b.c.d, then it will iterate from + * a.b.c.2 to a.b.c.255, when start=2 and [end]=255 (default) + */ + class Inet4Iterator( + private val originalIp: InetAddress, + private val skipOriginal: Boolean = true, + start: UInt = 2u, + private val end: UInt = 255u + ) : Iterator>, Iterable> { + + private val a: UByte + private val b: UByte + private val c: UByte + private val skip: UByte + private var d = start + + init { + val addressBytes = originalIp.address + a = addressBytes[0].toUByte() + b = addressBytes[1].toUByte() + c = addressBytes[2].toUByte() + skip = addressBytes[3].toUByte() + } + + override fun hasNext(): Boolean { + return if (skipOriginal && skip == 0xFFu.toUByte()) d < end else d < (end + 1u) + } + + override fun next(): Pair { + val result = Pair(d.toInt(), Inet4Util.fromIpClasses(a, b, c, d.toUByte())) + d += if (d == skip - 1u) 2u else 1u + return result + } + + override fun iterator() = this + } + + object Inet4Util { + fun fromIpClasses(a: UByte, b: UByte, c: UByte, d: UByte): InetAddress { + return Inet4Address.getByName("$a.$b.$c.$d") + } + } + + fun InetAddress.getIpClassSimilarity(other: InetAddress): Int { + if (this::class != other::class) return 0 + val ipClasses = this.address + val otherIpClasses = other.address + + for (i in 0 until ipClasses.size.coerceAtMost(otherIpClasses.size)) { + if (ipClasses[i] != otherIpClasses[i]) return i + } + return ipClasses.size + } + + fun List.chooseSimilarIp(other: InetAddress) = this.maxByOrNull { it.getIpClassSimilarity(other) } + + fun Enumeration.forEach(block: (T) -> Unit) { + for (i in this) block(i) + } + + fun Enumeration.filter(block: (T) -> Boolean): List { + val result = mutableListOf() + for (i in this) if (block(i)) result += i + return result + } +} + +fun HttpServletRequest.getIpAddressString(): String = this.getHeader("X-FORWARDED-FOR") ?: this.remoteAddr + +fun HttpServletRequest.getIpAddress(): InetAddress = InetAddress.getByName(this.getIpAddressString()) diff --git a/src/main/kotlin/tv/anypoint/proxy/web/DeviceController.kt b/src/main/kotlin/tv/anypoint/proxy/web/DeviceController.kt new file mode 100644 index 0000000..f80d399 --- /dev/null +++ b/src/main/kotlin/tv/anypoint/proxy/web/DeviceController.kt @@ -0,0 +1,62 @@ +package tv.anypoint.proxy.web + +import jakarta.servlet.http.HttpServletRequest +import mu.KLogging +import org.springframework.web.bind.annotation.* +import tv.anypoint.domain.agent.AuthRequest +import tv.anypoint.domain.agent.AuthResponse +import tv.anypoint.domain.agent.StateChangeLog +import tv.anypoint.domain.agent.ad.AdsResponse +import tv.anypoint.domain.agent.ad.AdsSyncRequest + +@RestController +@RequestMapping("/v3/device") +class DeviceController { + + @PostMapping("/auth") + fun authorize(request: HttpServletRequest, @RequestBody body: AuthRequest): AuthResponse { + logger.info("POST /v3/device/auth -d $body") + +// request.getIpAddress() + val authResponse: AuthResponse = TODO("authRequestHandlerService.handleRequest(HttpRequestUtil.getIpAddress(request), body)") + authResponse.adConfig.maxDownloadBandwidth = 1000 * 1024 * 1024 + authResponse.adConfig.maxLazyDownloadBandwidth = 1000 * 1024 * 1024 + return authResponse + } + + @GetMapping("/ads") + fun advertisements( + @RequestParam("deviceId") deviceId: Long, + @RequestParam("freeStorage", required = false, defaultValue = "10000000000") freeStorage: Long?, + @RequestParam("usedStorage", required = false, defaultValue = "0") usedStorage: Long? + ): AdsResponse { + logger.info("GET /v3/device/ads?deviceId=$deviceId&freeStorage=$freeStorage&usedStorage=$usedStorage") +// return adsRequestHandlerService.handleRequest(deviceId, freeStorage, usedStorage) + return AdsResponse() + } + + @PostMapping("/sync/ads") + fun adSync(request: HttpServletRequest, @RequestBody body: AdsSyncRequest) { + logger.info("POST /v3/device/sync/ads -d $body") +// deviceAdSyncHandlerService.handleRequest(HttpRequestUtil.getIpAddress(request)) + } + + @PostMapping("/state-logs") + fun stateLogs(@RequestBody body: List) { + logger.info("POST /v3/device/state-logs -d $body") + } + + @PostMapping("/event") + @ResponseBody + fun deviceEvent(request: HttpServletRequest, @RequestBody body: String) { + logger.info("POST /v3/device/event -d $body") + } + + @PostMapping("/impression-logs") + @ResponseBody + fun impressionLogs(request: HttpServletRequest, @RequestBody body: String) { + logger.info("POST /v3/device/ssion-logs -d $body") + } + + companion object : KLogging() +} diff --git a/src/main/kotlin/tv/anypoint/tc/Base1.kt b/src/main/kotlin/tv/anypoint/tc/Base1.kt index c99f408..efa9d95 100644 --- a/src/main/kotlin/tv/anypoint/tc/Base1.kt +++ b/src/main/kotlin/tv/anypoint/tc/Base1.kt @@ -2,21 +2,22 @@ package tv.anypoint.tc import mu.KLogging import org.springframework.stereotype.Component +import tv.anypoint.domain.adb.ExtraKey +import tv.anypoint.domain.adb.IntentAction import tv.anypoint.dsl.adb +import tv.anypoint.dsl.expected import tv.anypoint.dsl.http +import tv.anypoint.dsl.model.Tc import tv.anypoint.dsl.service.TestCase import tv.anypoint.dsl.tc -import tv.anypoint.dsl.model.Tc -import tv.anypoint.dsl.model.adb.ExtraKey -import tv.anypoint.dsl.model.adb.IntentAction @Component class Base1 : TestCase() { override fun init(): Tc = tc { - number = 1 + number = "BASE-1" reboot = true vast = http { - validate = { false } + validate = { it.id != null } } } @@ -25,8 +26,12 @@ class Base1 : TestCase() { a = IntentAction.CHANGE_TEST_PROPERTY, es = mapOf(ExtraKey.TEST_DEVICE to "true") ) - logger.debug("started to base1 test") - logger.debug("finished to base1 test") + + expected("changed to test device") + + // AD Agent, AD SDK 통신규격상으로는 a 필수, es 는 선택사항 + // https://dev-docs.anypoint.tv/books/ff-settop-ad-agent/page/ad-agent-ad-sdk + // 예외 사항이 존재할 지? adb( a = IntentAction.CHANGE_TEST_PROPERTY, es = mapOf(ExtraKey.TEST_DEVICE to "false") diff --git a/src/main/kotlin/tv/anypoint/tc/Tc1.kt b/src/main/kotlin/tv/anypoint/tc/Tc1.kt index 75b1800..624f0ec 100644 --- a/src/main/kotlin/tv/anypoint/tc/Tc1.kt +++ b/src/main/kotlin/tv/anypoint/tc/Tc1.kt @@ -2,14 +2,14 @@ package tv.anypoint.tc import mu.KLogging import org.springframework.stereotype.Component +import tv.anypoint.dsl.model.Tc import tv.anypoint.dsl.service.TestCase import tv.anypoint.dsl.tc -import tv.anypoint.dsl.model.Tc @Component class Tc1 : TestCase() { override fun init(): Tc = tc { - number = 1 + number = "TC-1" } override fun test() { diff --git a/src/main/kotlin/tv/anypoint/dsl/TestCaseStarter.kt b/src/main/kotlin/tv/anypoint/tc/TestCaseStarter.kt similarity index 76% rename from src/main/kotlin/tv/anypoint/dsl/TestCaseStarter.kt rename to src/main/kotlin/tv/anypoint/tc/TestCaseStarter.kt index 2ffafe2..91a035c 100644 --- a/src/main/kotlin/tv/anypoint/dsl/TestCaseStarter.kt +++ b/src/main/kotlin/tv/anypoint/tc/TestCaseStarter.kt @@ -1,19 +1,18 @@ -package tv.anypoint.dsl +package tv.anypoint.tc import mu.KLogging -import org.springframework.boot.context.event.ApplicationReadyEvent -import org.springframework.context.event.EventListener -import org.springframework.stereotype.Component +import org.springframework.stereotype.Service import tv.anypoint.dsl.service.TestCase -@Component +@Service class TestCaseStarter( private val testCases: List ) { - @EventListener(ApplicationReadyEvent::class) - fun testAfterStartup() { + fun testAll() { // TODO: main.log 덤프 시작 + startDumpLog() + testCases.forEach { it.executeTest() } @@ -33,6 +32,16 @@ class TestCaseStarter( ) ) } + + stopDumpLog() + } + + fun startDumpLog() { + // TODO: + } + + fun stopDumpLog() { + // TODO } companion object : KLogging() diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index d443826..a1c7738 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,9 +1,24 @@ spring: application: name: android-qa + profiles: + active: skb logging: level: root: INFO tv.anypoint: DEBUG anypoint.android-qa: - file-path: /home/bean/dev/qa \ No newline at end of file + stb: + ip: 192.168.0.1 + port: 5555 + file-root: /home/bean/dev/qa + +--- + +spring: + config.activate.on-profile: skb +anypoint.android-qa: + push-server-port: 31102 + endpoints: + auth: https://skb-api.anypoint.tv + assign: http://skb-assign-app-prod.ap-northeast-1.elasticbeanstalk.com diff --git a/src/test/kotlin/tv/anypoint/androidqa/AdsResponseTest.kt b/src/test/kotlin/tv/anypoint/androidqa/AdsResponseTest.kt new file mode 100644 index 0000000..78c070d --- /dev/null +++ b/src/test/kotlin/tv/anypoint/androidqa/AdsResponseTest.kt @@ -0,0 +1,4 @@ +package tv.anypoint.androidqa + +class AdsResponseTest { +} \ No newline at end of file diff --git a/src/test/kotlin/tv/anypoint/androidqa/AndroidQaApplicationTests.kt b/src/test/kotlin/tv/anypoint/androidqa/AndroidQaApplicationTests.kt deleted file mode 100644 index 5dfeafc..0000000 --- a/src/test/kotlin/tv/anypoint/androidqa/AndroidQaApplicationTests.kt +++ /dev/null @@ -1,13 +0,0 @@ -package tv.anypoint.androidqa - -import org.junit.jupiter.api.Test -import org.springframework.boot.test.context.SpringBootTest - -@SpringBootTest -class AndroidQaApplicationTests { - - @Test - fun contextLoads() { - } - -} diff --git a/src/test/kotlin/tv/anypoint/androidqa/AssetConvertResponseTest.kt b/src/test/kotlin/tv/anypoint/androidqa/AssetConvertResponseTest.kt new file mode 100644 index 0000000..19733ba --- /dev/null +++ b/src/test/kotlin/tv/anypoint/androidqa/AssetConvertResponseTest.kt @@ -0,0 +1,4 @@ +package tv.anypoint.androidqa + +class AssetConvertResponseTest { +} \ No newline at end of file diff --git a/src/test/kotlin/tv/anypoint/androidqa/AuthResponseTest.kt b/src/test/kotlin/tv/anypoint/androidqa/AuthResponseTest.kt new file mode 100644 index 0000000..bd844be --- /dev/null +++ b/src/test/kotlin/tv/anypoint/androidqa/AuthResponseTest.kt @@ -0,0 +1,25 @@ +package tv.anypoint.androidqa + +import io.kotest.core.spec.style.BehaviorSpec +import io.kotest.matchers.shouldBe +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.decodeFromStream +import org.springframework.core.io.ClassPathResource +import tv.anypoint.domain.agent.AuthResponse + +@OptIn(ExperimentalSerializationApi::class) +class AuthResponseTest : BehaviorSpec() { + + init { + Given("auth-response.json file") { + val file = ClassPathResource("auth-response.json").file + When("deserialize") { + val actual = Json.decodeFromStream(file.inputStream()) + Then("read values") { + actual.deviceId shouldBe 36986237L + } + } + } + } +} diff --git a/src/test/kotlin/tv/anypoint/androidqa/VastResponseTest.kt b/src/test/kotlin/tv/anypoint/androidqa/VastResponseTest.kt new file mode 100644 index 0000000..9890bc0 --- /dev/null +++ b/src/test/kotlin/tv/anypoint/androidqa/VastResponseTest.kt @@ -0,0 +1,4 @@ +package tv.anypoint.androidqa + +class VastResponseTest { +} \ No newline at end of file diff --git a/src/test/resources/ads-response.json b/src/test/resources/ads-response.json new file mode 100644 index 0000000..26143fa --- /dev/null +++ b/src/test/resources/ads-response.json @@ -0,0 +1,98 @@ +{ + "status": "OK", + "ads": [ + { + "id": 66192, + "adRequest": null, + "asset": { + "assetId": 724560, + "crc": "1081046660", + "mediaUrl": "https://ecdnaddtv.hanafostv.com:9443/addrads/prod/72456/ENCODING/18/1672300537007.ts", + "duration": 14948, + "bytes": 7238188, + "playType": "DNP", + "extendedQueryString": "vid_bitrate=3817000&vid_color_bits=8&vid_codec=27&vid_profile=100&vid_level=40&vid_height=1080&vid_id=481&vid_scan=4&vid_width=1920&aud1_bitrate=3817000&aud1_ch=2&aud1_codec=15&aud1_profile=LC&aud1_id=482&aud1_sr=48000&aud2_bitrate=3817000&aud2_ch=2&aud2_codec=129&aud2_id=483&aud2_sr=48000&" + }, + "campaignId": 26627, + "campaignType": "CHARGE", + "viewSequence": 5400, + "paused": false, + "price": 0, + "priceModel": "CPV", + "priceCurrency": "KRW", + "startAt": 1675177200000, + "endAt": 2145884399999, + "extraPlay": 0, + "extraPlayContinuous": false + }, + { + "id": 48341, + "adRequest": null, + "asset": { + "assetId": 684610, + "crc": "1859527903", + "mediaUrl": "https://ecdnaddtv.hanafostv.com:9443/addrads/prod/68457/ENCODING/18/1668564528712.ts", + "duration": 2936, + "bytes": 498576, + "playType": "DNP", + "extendedQueryString": "vid_bitrate=1334000&vid_color_bits=8&vid_codec=27&vid_profile=100&vid_level=40&vid_height=1080&vid_id=481&vid_scan=4&vid_width=1920&aud1_bitrate=1334000&aud1_ch=2&aud1_codec=15&aud1_profile=LC&aud1_id=482&aud1_sr=48000&aud2_bitrate=1334000&aud2_ch=2&aud2_codec=129&aud2_id=483&aud2_sr=48000&" + }, + "campaignId": 2645, + "campaignType": "ENDING", + "viewSequence": 0, + "paused": false, + "price": 0, + "priceModel": "CPV", + "priceCurrency": "KRW", + "startAt": 1606834800000, + "endAt": 2145884399999, + "extraPlay": 0, + "extraPlayContinuous": false + } + ], + "targetAds": [ + { + "hours": "|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", + "days": "|1|2|3|4|5|6|7|", + "placements": "|100-1|109-1|112-2|115-1|118-1|121-1|124-1|133-1|136-1|142-1|154-1|157-1|160-2|163-1|169-1|172-1|178-1|181-1|184-1|187-1|190-1|193-1|196-1|199-1|205-1|208-1|211-1|223-1|232-1|235-1|238-1|241-1|244-1|247-1|250-1|253-1|307-1|316-2|325-2|328-1|337-1|340-2|343-1|346-1|349-1|352-1|355-1|361-1|364-1|367-1|37-1|40-1|424-1|427-1|43-1|430-1|433-1|436-1|46-1|469-1|49-1|499-2|511-1|512-1|514-1|515-1|524-1|541-1|728-1|773-1|774-1|784-1|79-1|809-1|82-1|85-1|88-1|883-1|885-1|887-200|888-200|889-1|91-1|94-1|97-1|", + "adIds": "|66437|" + }, + { + "hours": "|0|1|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", + "days": "|1|2|3|4|5|6|7|", + "placements": "|262-1|379-1|382-1|385-1|388-1|397-1|406-1|409-1|415-2|418-1|421-1|", + "adIds": "|66192|" + }, + { + "hours": "|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", + "days": "|1|2|3|4|5|6|7|", + "placements": "|322-1000|322-1100|322-1200|322-1300|322-2000|322-2100|322-2200|322-2300|322-3000|322-3100|322-3200|322-3300|", + "adIds": "|-54695|-54694|" + }, + { + "hours": "|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", + "days": "|1|2|3|4|5|6|7|", + "placements": "|13-100|13-110|13-120|13-130|", + "adIds": "|-54561|-54560|-54559|-54558|-54557|-54556|" + }, + { + "hours": "|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", + "days": "|1|2|3|4|5|6|7|", + "placements": "|190-2|", + "adIds": "|-53060|" + }, + { + "hours": "|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", + "days": "|1|2|3|4|5|6|7|", + "placements": "|100-1|109-1|109-2|112-2|112-5|115-1|118-1|121-1|121-2|124-1|133-1|136-1|139-1|142-1|154-1|157-1|160-2|163-1|169-1|172-1|175-1|178-1|181-1|184-1|187-1|190-1|190-2|193-1|196-1|199-1|205-1|208-1|211-1|211-2|214-1|217-1|217-2|220-1|223-1|226-1|229-1|232-1|235-1|235-2|238-1|241-1|241-2|244-1|244-2|247-1|250-1|250-2|253-1|253-2|259-1|262-1|274-1|277-1|289-1|298-1|307-1|310-1|316-2|316-5|322-1|322-1000|322-1100|322-1200|322-1300|322-2000|322-2100|322-2200|322-2300|322-3000|322-3100|322-3200|322-3300|325-2|325-5|328-1|331-1|337-1|340-2|340-5|343-1|343-2|346-1|349-1|349-2|352-1|355-1|358-1|361-1|364-1|367-1|37-1|379-1|379-2|382-1|385-1|388-1|397-1|40-1|406-1|409-1|415-2|415-5|418-1|421-1|424-1|427-1|43-1|430-1|433-1|436-1|46-1|469-1|469-5|487-1|49-1|499-2|511-1|512-1|514-1|514-2|515-1|524-1|524-2|541-1|545-2|687-2|691-1|691-1000|691-1100|691-1200|691-1300|691-2000|691-2100|691-2200|691-2300|691-3000|691-3100|691-3200|691-3300|723-2|728-1|728-2|734-2|735-2|736-2|773-1|773-2|774-1|784-1|79-1|79-2|796-2|797-2|809-1|809-2|814-2|82-1|85-1|88-1|883-1|883-2|885-1|885-1200|885-2200|885-3200|887-1000|887-1100|887-1200|887-1300|887-200|887-2000|887-2100|887-2200|887-2300|887-3000|887-3100|887-3200|887-3300|888-1100|888-1200|888-1300|888-2|888-200|889-1|889-1000|889-2000|889-3000|891-1200|891-2200|891-3200|91-1|94-1|97-1|", + "adIds": "|45174|45175|48490|52835|66003|-54714|" + }, + { + "hours": "|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|", + "days": "|1|2|3|4|5|6|7|", + "placements": "|10-100|10-110|10-120|10-130|100-1|109-1|109-2|112-2|112-5|115-1|118-1|121-1|121-2|124-1|13-10|13-100|13-110|13-120|13-130|133-1|136-1|139-1|142-1|154-1|154-5|157-1|160-2|160-5|163-1|169-1|172-1|175-1|178-1|181-1|184-1|187-1|190-1|190-2|193-1|196-1|199-1|205-1|208-1|211-1|211-2|214-1|217-1|217-2|220-1|223-1|226-1|229-1|232-1|235-1|235-2|238-1|241-1|241-2|244-1|244-2|247-1|250-1|250-2|253-1|253-2|259-1|262-1|274-1|277-1|289-1|298-1|307-1|310-1|316-2|316-5|322-1|322-1000|322-1100|322-1200|322-1300|322-2000|322-2100|322-2200|322-2300|322-3000|322-3100|322-3200|322-3300|325-2|325-5|328-1|331-1|337-1|340-2|340-5|343-1|343-2|346-1|349-1|349-2|352-1|355-1|358-1|361-1|364-1|367-1|37-1|379-1|379-2|382-1|385-1|388-1|397-1|40-1|406-1|409-1|415-2|415-5|418-1|421-1|424-1|427-1|43-1|430-1|433-1|436-1|46-1|469-1|469-5|487-1|49-1|499-2|499-5|511-1|512-1|514-1|514-2|515-1|524-1|524-2|541-1|545-2|687-2|691-1|691-1000|691-1100|691-1200|691-1300|691-2000|691-2100|691-2200|691-2300|691-3000|691-3100|691-3200|691-3300|723-2|728-1|728-2|734-2|735-2|736-2|773-1|773-2|774-1|784-1|79-1|79-2|796-2|797-2|809-1|809-2|814-2|82-1|85-1|88-1|883-1|883-2|885-1|885-1200|885-2200|885-3200|887-1000|887-1100|887-1200|887-1300|887-200|887-2000|887-2100|887-2200|887-2300|887-3000|887-3100|887-3200|887-3300|888-1100|888-1200|888-1300|888-2|888-200|889-1|889-1000|889-2000|889-3000|891-1200|891-2200|891-3200|91-1|94-1|97-1|", + "adIds": "|48341|66003|67280|66192|66361|66133|66577|66260|-54714|67368|67367|-55857|67149|67147|67343|67370|" + } + ], + "deleteCache": false +} diff --git a/src/test/resources/asset-convert.json b/src/test/resources/asset-convert.json new file mode 100644 index 0000000..869cf03 --- /dev/null +++ b/src/test/resources/asset-convert.json @@ -0,0 +1,12 @@ +{ + "created": false, + "asset": { + "assetId": 30116, + "crc": "1624645205", + "duration": 15000, + "mediaUrl": "http://123.140.50.10/prod/30116/ENCODING/18/1646959017272.mp4", + "playType": "DNP", + "bytes": 6741195, + "extendedQueryString": "audioPID=1002&audioType=AAC&videoPID=1001&videoType=H.264" + } +} diff --git a/src/test/resources/auth-response.json b/src/test/resources/auth-response.json new file mode 100644 index 0000000..d402fa4 --- /dev/null +++ b/src/test/resources/auth-response.json @@ -0,0 +1,1580 @@ +{ + "deviceId": 36986237, + "deviceTypeId": 20, + "uuid": "fa6ec0cc-3450-4f1a-bbf8-d6724063f845", + "monitoringInterval": 180000, + "endpoints": { + "auth": "http://192.168.10.13", + "requestAds": "http://192.168.10.13", + "adSyncResult": "http://192.168.10.13", + "appLog": "http://192.168.10.13", + "event": "http://192.168.10.13", + "pushServers": [ + "27.96.131.25:31102" + ], + "stateLog": "http://192.168.10.13", + "impressionLog": "http://192.168.10.13", + "ntpServers": [ + "27.96.134.128", + "49.50.165.198", + "115.85.183.54" + ], + "assetRequest": "http://192.168.10.13", + "proxyAdLog": "http://192.168.10.13" + }, + "channels": [ + { + "id": 10, + "delay": 0, + "serviceId": "503", + "kid": false, + "placementIds": [ + 100, + 110, + 120, + 130 + ], + "testPlacementIds": null + }, + { + "id": 13, + "delay": 0, + "serviceId": "505", + "kid": false, + "placementIds": [ + 130, + 100, + 110, + 120 + ], + "testPlacementIds": null + }, + { + "id": 37, + "delay": 771, + "serviceId": "747", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": [ + 12345 + ] + }, + { + "id": 40, + "delay": 869, + "serviceId": "750", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 43, + "delay": 554, + "serviceId": "749", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 46, + "delay": 2773, + "serviceId": "746", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 49, + "delay": 3539, + "serviceId": "698", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 79, + "delay": -2334, + "serviceId": "616", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 82, + "delay": -2667, + "serviceId": "771", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 85, + "delay": -163, + "serviceId": "742", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 88, + "delay": -2563, + "serviceId": "604", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 91, + "delay": -328, + "serviceId": "630", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 94, + "delay": -3466, + "serviceId": "627", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 97, + "delay": -4333, + "serviceId": "752", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 100, + "delay": -4400, + "serviceId": "631", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 109, + "delay": 1038, + "serviceId": "617", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 112, + "delay": 3157, + "serviceId": "612", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": [ + 5 + ] + }, + { + "id": 115, + "delay": 305, + "serviceId": "621", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 118, + "delay": -146, + "serviceId": "626", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 121, + "delay": 769, + "serviceId": "619", + "kid": false, + "placementIds": [ + 2, + 1 + ], + "testPlacementIds": null + }, + { + "id": 124, + "delay": -533, + "serviceId": "712", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 133, + "delay": 0, + "serviceId": "798", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 1 + ] + }, + { + "id": 136, + "delay": 0, + "serviceId": "797", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 1 + ] + }, + { + "id": 142, + "delay": -400, + "serviceId": "803", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 145, + "delay": 0, + "serviceId": "605", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 1 + ] + }, + { + "id": 154, + "delay": 271, + "serviceId": "684", + "kid": false, + "placementIds": [ + 1, + 5 + ], + "testPlacementIds": null + }, + { + "id": 157, + "delay": 2838, + "serviceId": "756", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 160, + "delay": 271, + "serviceId": "685", + "kid": false, + "placementIds": [ + 1, + 5 + ], + "testPlacementIds": null + }, + { + "id": 163, + "delay": 4425, + "serviceId": "654", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 169, + "delay": 505, + "serviceId": "652", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 172, + "delay": 1005, + "serviceId": "671", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 175, + "delay": 3091, + "serviceId": "744", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 181, + "delay": -1201, + "serviceId": "690", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 184, + "delay": 1768, + "serviceId": "666", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 187, + "delay": -1768, + "serviceId": "609", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 190, + "delay": 2725, + "serviceId": "658", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 193, + "delay": 538, + "serviceId": "725", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 196, + "delay": 106, + "serviceId": "723", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 199, + "delay": -1196, + "serviceId": "700", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 205, + "delay": 2125, + "serviceId": "603", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 208, + "delay": 605, + "serviceId": "696", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 211, + "delay": -697, + "serviceId": "753", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 214, + "delay": 2101, + "serviceId": "648", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 217, + "delay": 205, + "serviceId": "660", + "kid": false, + "placementIds": [ + 2, + 1 + ], + "testPlacementIds": null + }, + { + "id": 223, + "delay": 0, + "serviceId": "808", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 1 + ] + }, + { + "id": 232, + "delay": 903, + "serviceId": "683", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 235, + "delay": 4, + "serviceId": "663", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 238, + "delay": -4233, + "serviceId": "707", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 241, + "delay": 571, + "serviceId": "670", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 244, + "delay": -1649, + "serviceId": "665", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 247, + "delay": 3072, + "serviceId": "625", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 250, + "delay": 0, + "serviceId": "641", + "kid": false, + "placementIds": [ + 2, + 1 + ], + "testPlacementIds": null + }, + { + "id": 253, + "delay": 3538, + "serviceId": "620", + "kid": false, + "placementIds": [ + 2, + 1 + ], + "testPlacementIds": null + }, + { + "id": 259, + "delay": 6043, + "serviceId": "691", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 262, + "delay": 0, + "serviceId": "757", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 271, + "delay": 0, + "serviceId": "435", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 1 + ] + }, + { + "id": 283, + "delay": -1730, + "serviceId": "175", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 289, + "delay": 0, + "serviceId": "793", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 295, + "delay": 2233, + "serviceId": "697", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 298, + "delay": 570, + "serviceId": "755", + "kid": false, + "placementIds": [ + 1 + ], + "taxonomies": null, + "testPlacementIds": null + }, + { + "id": 307, + "delay": -2286, + "serviceId": "795", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 310, + "delay": 3307, + "serviceId": "681", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 316, + "delay": 590, + "serviceId": "615", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": [ + 5 + ] + }, + { + "id": 322, + "delay": 333, + "serviceId": "606", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": [ + 120, + 3000, + 130, + 3100, + 200, + 3200, + 1000, + 3300, + 1100, + 4000, + 1200, + 4100, + 1300, + 4200, + 2000, + 4300, + 2100, + 100, + 2200, + 110, + 2300 + ] + }, + { + "id": 325, + "delay": -1599, + "serviceId": "634", + "kid": false, + "placementIds": [ + 1, + 5 + ], + "testPlacementIds": null + }, + { + "id": 328, + "delay": -4291, + "serviceId": "624", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 331, + "delay": -297, + "serviceId": "688", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 337, + "delay": 672, + "serviceId": "682", + "kid": false, + "placementIds": [ + 1 + ], + "taxonomies": null, + "testPlacementIds": null + }, + { + "id": 340, + "delay": 872, + "serviceId": "687", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": [ + 5 + ] + }, + { + "id": 343, + "delay": 3539, + "serviceId": "613", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 346, + "delay": 971, + "serviceId": "622", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 349, + "delay": 736, + "serviceId": "618", + "kid": false, + "placementIds": [ + 2, + 1 + ], + "testPlacementIds": null + }, + { + "id": 352, + "delay": 2673, + "serviceId": "637", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 355, + "delay": 204, + "serviceId": "667", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 361, + "delay": 3141, + "serviceId": "668", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 364, + "delay": 2940, + "serviceId": "614", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 367, + "delay": 991, + "serviceId": "602", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 379, + "delay": 304, + "serviceId": "608", + "kid": true, + "placementIds": [ + 2, + 1 + ], + "testPlacementIds": null + }, + { + "id": 382, + "delay": 2671, + "serviceId": "761", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 385, + "delay": -6303, + "serviceId": "776", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 388, + "delay": 2704, + "serviceId": "728", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 397, + "delay": 703, + "serviceId": "693", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 403, + "delay": 0, + "serviceId": "646", + "kid": false, + "placementIds": [ + 1000, + 3300, + 1100, + 4000, + 1200, + 4100, + 1300, + 4200, + 2000, + 4300, + 2100, + 100, + 2200, + 110, + 2300, + 120, + 3000, + 130, + 3100, + 200, + 3200 + ], + "testPlacementIds": null + }, + { + "id": 409, + "delay": -95, + "serviceId": "636", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 412, + "delay": -215, + "serviceId": "699", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 415, + "delay": -2267, + "serviceId": "635", + "kid": true, + "placementIds": [ + 5, + 1 + ], + "testPlacementIds": null + }, + { + "id": 418, + "delay": -4505, + "serviceId": "716", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 421, + "delay": 834, + "serviceId": "695", + "kid": true, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 424, + "delay": 2252, + "serviceId": "653", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 427, + "delay": -1900, + "serviceId": "623", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 430, + "delay": 5173, + "serviceId": "778", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 433, + "delay": -479, + "serviceId": "644", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 436, + "delay": 271, + "serviceId": "689", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 442, + "delay": 0, + "serviceId": "769", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 469, + "delay": -1900, + "serviceId": "724", + "kid": false, + "placementIds": [ + 1, + 5 + ], + "testPlacementIds": null + }, + { + "id": 472, + "delay": 0, + "serviceId": "655", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 478, + "delay": -674, + "serviceId": "611", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 487, + "delay": 0, + "serviceId": "720", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 499, + "delay": 655, + "serviceId": "686", + "kid": false, + "placementIds": [ + 5, + 1 + ], + "testPlacementIds": null + }, + { + "id": 511, + "delay": 771, + "serviceId": "775", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 512, + "delay": 3340, + "serviceId": "734", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 514, + "delay": 3706, + "serviceId": "694", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 515, + "delay": -467, + "serviceId": "662", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 524, + "delay": 3539, + "serviceId": "692", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 536, + "delay": -92, + "serviceId": "656", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 541, + "delay": -128, + "serviceId": "647", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 545, + "delay": 0, + "serviceId": "748", + "kid": false, + "placementIds": [ + 1, + 2 + ], + "testPlacementIds": null + }, + { + "id": 559, + "delay": 2636, + "serviceId": "784", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 687, + "delay": 0, + "serviceId": "582", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 691, + "delay": 0, + "serviceId": "767", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 3000, + 130, + 3100, + 200, + 3200, + 1000, + 3300, + 1100, + 4000, + 1200, + 4100, + 1300, + 4200, + 2000, + 4300, + 2100, + 100, + 2200, + 110, + 2300, + 120 + ] + }, + { + "id": 698, + "delay": 0, + "serviceId": "741", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 708, + "delay": 0, + "serviceId": "802", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 709, + "delay": 0, + "serviceId": "806", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 723, + "delay": 0, + "serviceId": "575", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 726, + "delay": -2734, + "serviceId": "651", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 728, + "delay": -4266, + "serviceId": "794", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 730, + "delay": -3533, + "serviceId": "726", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 748, + "delay": 0, + "serviceId": "788", + "kid": false, + "placementIds": [ + 1200, + 1, + 3100, + 1300, + 3200, + 2300, + 3300, + 120, + 4000, + 130, + 4100, + 4200, + 4300, + 1000, + 100, + 2000, + 200, + 2200, + 1100, + 3000 + ], + "testPlacementIds": null + }, + { + "id": 749, + "delay": 0, + "serviceId": "789", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 750, + "delay": 0, + "serviceId": "763", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 751, + "delay": -380, + "serviceId": "787", + "kid": false, + "placementIds": [ + 1 + ], + "testPlacementIds": null + }, + { + "id": 862, + "delay": 0, + "serviceId": "804", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 874, + "delay": 0, + "serviceId": "162", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 875, + "delay": 0, + "serviceId": "163", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 891, + "delay": 0, + "serviceId": "569", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 892, + "delay": 0, + "serviceId": "570", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 896, + "delay": 0, + "serviceId": "578", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 901, + "delay": 0, + "serviceId": "564", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 978, + "delay": 2000, + "serviceId": "772", + "kid": false, + "placementIds": [ + 1200, + 1, + 2200, + 3200 + ], + "testPlacementIds": [ + 2 + ] + }, + { + "id": 991, + "delay": 0, + "serviceId": "739", + "kid": false, + "placementIds": [ + 2 + ], + "testPlacementIds": null + }, + { + "id": 994, + "delay": 0, + "serviceId": "800", + "kid": false, + "placementIds": [ + 130, + 100, + 120, + 110 + ], + "testPlacementIds": [ + 1300, + 5 + ] + }, + { + "id": 995, + "delay": 0, + "serviceId": "779", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 4100, + 1200, + 2200, + 3200, + 1000, + 4200, + 2000, + 1300, + 3000, + 200, + 2300, + 4000, + 3300, + 1100, + 4300, + 2100, + 5000, + 3100, + 2 + ] + }, + { + "id": 996, + "delay": 0, + "serviceId": "799", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 2200, + 3200, + 2, + 1200 + ] + }, + { + "id": 998, + "delay": 0, + "serviceId": "158", + "kid": true, + "placementIds": null, + "testPlacementIds": [ + 1200, + 2200, + 3200, + 2 + ] + }, + { + "id": 1001, + "delay": 0, + "serviceId": "150", + "kid": false, + "placementIds": null, + "testPlacementIds": [ + 1100, + 1200, + 1300 + ] + } + ], + "adConfig": { + "maxDownloadBandwidth": 300000, + "appPath": "/data/user/0/tv.anypoint.uplus.tvg.app/files/assets/", + "maxUsableStorage": 1048576000, + "minFreeStorage": 130000000, + "trackingRetryInterval": 300000, + "trackingRetryCount": 3, + "remnantTimeThreshold": 2000, + "transitionDelay": 0, + "videoPlayMode": "PARALLEL", + "videoMediaType": "CONCATENATING", + "onPlayDelay": 1, + "startDelay": 132, + "stopDelay": 132, + "startRenderDelay": 0, + "stopRenderDelay": 0, + "maxEndAdPlaytime": 15000, + "overPlayTimeThreshold": 0, + "useLastPositionGoogleAd": true, + "minRequestAdDuration": 5000, + "useStreaming": true, + "useContinuousCue": true, + "maxLazyDownloadBandwidth": 10485760, + "minCueGap" : 2000, + "maxAssignLoop": 20, + "sendBeaconFireResult": true, + "onceAdReadyResponse": false, + "onceAdReadyRequiredTime": 5000, + "onCueCachingTimeWeight": 0.25, + "playerStateCheckParam": { + "playerStateCheckDuration": 7000, + "maxPlayerInvalidateInterval": 3000 + } + }, + "chViewMinTime": 2000, + "kidWatermark": { + "imageUrl": "https://uplus-assets.s3.ap-northeast-2.amazonaws.com/images/watermark.png", + "crc": 2435207897, + "left": 3210, + "top": 66, + "width": 526, + "height": 136 + }, + "accessToken": "16157345-9d93-4cb5-8376-49c789f0d4f3", + "pushSecretKey": "Tx?c)T!3e.52Th5J", + "recognizedSleepTime": 432000000 +} diff --git a/src/test/resources/vast-response.xml b/src/test/resources/vast-response.xml new file mode 100644 index 0000000..6db89b6 --- /dev/null +++ b/src/test/resources/vast-response.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + 5.101 + + + + + + + + + + 00:00:15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {"assetId":-50430,"crc":"3113586070","duration":14981,"mediaUrl":"http://123.140.50.75/prod/-50430/ENCODING/18/138961747812860183.mp4","playType":"DNP","bytes":5702218} + + + + + +