Расчет витков по TLE
This commit is contained in:
+12
@@ -13,6 +13,7 @@ import space.nstart.pcp.pcp_types_lib.dto.ballistics.SatelliteICDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.SatelliteOrbitAvailabilityDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TLEDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TlePointRequestDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TleRevolutionsRequestDTO
|
||||
import space.nstart.pcp.slots_service.dto.tlecomparison.TleParsedDTO
|
||||
import space.nstart.pcp.slots_service.configuration.CustomErrorException
|
||||
import java.net.URI
|
||||
@@ -115,6 +116,17 @@ class BallisticsService (webClientBuilderProvider: ObjectProvider<WebClient.Buil
|
||||
.block()
|
||||
?: throw CustomErrorException("Не удалось рассчитать положение по TLE на время $time")
|
||||
|
||||
fun tleRevolutions(tle: TLEDTO, days: Double): List<AscNodeDTO> =
|
||||
webClientBuilder.build()
|
||||
.post()
|
||||
.uri("$url/api/tle/revolutions")
|
||||
.bodyValue(TleRevolutionsRequestDTO(tle = tle, days = days))
|
||||
.retrieve()
|
||||
.bodyToFlux(AscNodeDTO::class.java)
|
||||
.collectList()
|
||||
.block()
|
||||
?: emptyList()
|
||||
|
||||
private fun withTimeInterval(
|
||||
path: String,
|
||||
timeStart: LocalDateTime?,
|
||||
|
||||
+20
-2
@@ -11,6 +11,7 @@ import space.nstart.pcp.pcp_types_lib.dto.ballistics.InitialConditionsDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.MovementModel
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.OrbPointDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.SatelliteICDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.ballistics.TLEDTO
|
||||
import java.net.InetSocketAddress
|
||||
import java.net.URI
|
||||
import java.time.LocalDateTime
|
||||
@@ -60,6 +61,13 @@ class BallisticsServiceTest {
|
||||
)
|
||||
)
|
||||
val currentInitialConditions = service.currentInitialConditions(101L)
|
||||
val tleRevolutions = service.tleRevolutions(
|
||||
TLEDTO(
|
||||
first = "1 25994U 99068A 26167.13049375 .00000315 00000-0 73126-4 0 9997",
|
||||
second = "2 25994 97.9457 216.7186 0001501 193.3628 244.8059 14.61102329409455"
|
||||
),
|
||||
days = 1.5
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
listOf(
|
||||
@@ -69,7 +77,8 @@ class BallisticsServiceTest {
|
||||
"/api/satellites/orbit/availability",
|
||||
"/api/satellites/101/extract-time",
|
||||
"/api/satellites/receive-rv",
|
||||
"/api/satellites/101/initial-conditions/current"
|
||||
"/api/satellites/101/initial-conditions/current",
|
||||
"/api/tle/revolutions"
|
||||
),
|
||||
requests.map { it.path }
|
||||
)
|
||||
@@ -81,6 +90,7 @@ class BallisticsServiceTest {
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
),
|
||||
requests.map { it.query }
|
||||
@@ -89,9 +99,12 @@ class BallisticsServiceTest {
|
||||
assertEquals(101L, availability.single().satelliteId)
|
||||
assertNotNull(exactPoint)
|
||||
assertEquals(timeStart, exactPoint.time)
|
||||
assertEquals(true, requestBodies.single().contains(""""movementModel":"KONDOR""""))
|
||||
assertNotNull(currentInitialConditions)
|
||||
assertEquals(101L, currentInitialConditions.satelliteId)
|
||||
assertEquals(emptyList(), tleRevolutions)
|
||||
assertEquals(2, requestBodies.size)
|
||||
assertEquals(true, requestBodies.any { it.contains(""""movementModel":"KONDOR"""") })
|
||||
assertEquals(true, requestBodies.any { it.contains(""""days":1.5""") })
|
||||
}
|
||||
|
||||
private fun createService(serverUrl: String): BallisticsService {
|
||||
@@ -164,6 +177,11 @@ class BallisticsServiceTest {
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
startedServer.createContext("/api/tle/revolutions") { exchange ->
|
||||
requests.add(exchange.requestURI)
|
||||
requestBodies.add(exchange.requestBody.bufferedReader().use { it.readText() })
|
||||
respond(exchange, "[]")
|
||||
}
|
||||
startedServer.start()
|
||||
server = startedServer
|
||||
return "http://localhost:${startedServer.address.port}"
|
||||
|
||||
Reference in New Issue
Block a user