Skip to content

Commit

Permalink
Merge pull request #1 from DaniruKun/refactor-tests
Browse files Browse the repository at this point in the history
Refactor code, add tests for telemetry parsers
  • Loading branch information
DaniruKun authored Jun 7, 2020
2 parents 5b08fea + 02dbbff commit 853ef5d
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 24 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/clojure.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ name: Clojure CI
on:
push:
pull_request:
branches: [ master ]
branches:
- 'master'
- '*'

jobs:
build:
Expand Down
4 changes: 2 additions & 2 deletions project.clj
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
(defproject iss-sim-auto-docking "0.1.1"
(defproject iss-sim-auto-docking "0.2.0"
:description "This app does automatic docking in the ISS SpaceX simulator."
:url "https://github.com/DaniruKun/spacex-iss-docking-sim-autopilot"
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
:url "https://www.eclipse.org/legal/epl-2.0/"}
:dependencies [[org.clojure/clojure "1.10.1"]
[etaoin "0.3.6"]
[org.clojure/math.numeric-tower "0.0.4"]]
:main iss-sim-auto-docking.core
:main ^:skip-aot iss-sim-auto-docking.core
:target-path "target/%s"
:jar-name "iss-sim-auto-docking.jar"
:uberjar-name "iss-sim-auto-docking-standalone.jar"
Expand Down
2 changes: 1 addition & 1 deletion src/iss_sim_auto_docking/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
;; start actual approach to docking port
(dragon/accelerate chr)
(future (dragon/decellerate chr))
(wait-visible chr success {:timeout 300})
(wait-visible chr success {:timeout 420})
(println "Docking confirmed")
(wait chr 10))
(System/exit 0))
4 changes: 2 additions & 2 deletions src/iss_sim_auto_docking/dragon.clj
Original file line number Diff line number Diff line change
Expand Up @@ -292,12 +292,12 @@
(defn accelerate
"docstring"
[driv]
(repeat 10 (translate driv "fwd")))
(repeat 20 (translate driv "fwd")))

(defn decellerate
"docstring"
[driv]
(Thread/sleep 1000)
(if (< (@tel/telem :x) safezone)
(repeat 8 (translate driv "aft"))
(repeat 18 (translate driv "aft"))
(recur driv)))
32 changes: 14 additions & 18 deletions src/iss_sim_auto_docking/telemetry.clj
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,13 @@
first
Float/parseFloat))

(defn parse-rot-rate
[rate]
(Float/parseFloat (str/replace rate #" °/s" emptystr)))

(defn parse-dist
[range]
(Float/parseFloat (str/replace range #" m" emptystr)))

(defn parse-vel
[vel]
(Float/parseFloat (str/replace vel #" m/s" emptystr)))
(defn parse-metric
"Parse a telemetry metric"
[metric metric-type]
(Float/parseFloat (str/replace metric (case metric-type
:roll-rate #" °/s"
:range #" m"
:vel #" m/s") emptystr)))

;; Roll

Expand All @@ -50,7 +46,7 @@
[driv]
(let [roll-rate-q (query driv {:css "#roll > div.rate"})
roll-rate (get-element-text-el driv roll-rate-q)]
(parse-rot-rate roll-rate)))
(parse-metric roll-rate :roll-rate)))

;; Pitch

Expand All @@ -66,7 +62,7 @@
[driv]
(let [pitch-rate-q (query driv {:css "#pitch > div.rate"})
pitch-rate (get-element-text-el driv pitch-rate-q)]
(parse-rot-rate pitch-rate)))
(parse-metric pitch-rate :roll-rate)))

;; Yaw

Expand All @@ -91,36 +87,36 @@
[driv]
(let [range-q (query driv {:css "#range > div.rate"})
range (get-element-text-el driv range-q)]
(parse-dist range)))
(parse-metric range :range)))

(defn get-x
"Get the distance to ISS on X axis."
[driv]
(let [x-q (query driv {:css "#x-range > div"})
x (get-element-text-el driv x-q)]
(parse-dist x)))
(parse-metric x :range)))

(defn get-y
"Get the distance to ISS on Y axis."
[driv]
(let [y-q (query driv {:css "#y-range > div"})
y (get-element-text-el driv y-q)]
(parse-dist y)))
(parse-metric y :range)))

(defn get-z
"Get the distance to ISS on Z axis."
[driv]
(let [z-q (query driv {:css "#z-range > div"})
z (get-element-text-el driv z-q)]
(parse-dist z)))
(parse-metric z :range)))

(defn get-approach-rate
"Get the approach rate relative to ISS."
[driv]
(let [v-q (query driv {:css "#rate > div.rate"})
v (get-element-text-el driv v-q)]
(-> v
(parse-vel)
(parse-metric :vel)
(math/abs))))

(defn poll
Expand Down
12 changes: 12 additions & 0 deletions test/iss_sim_auto_docking/telemetry_test.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
(ns iss-sim-auto-docking.telemetry_test
(:require [clojure.test :refer :all]
[iss-sim-auto-docking.telemetry :refer :all]))

(deftest parse-metric-test
"Test metric parser with different inputs"
(testing "Test rate parser"
(is (= (float 1.3) (parse-metric "1.3 °/s" :roll-rate))))
(testing "Test range parser"
(is (= (float -10.2) (parse-metric "-10.2 m" :range))))
(testing "Test velocity parser"
(is (= (float 1.4) (parse-metric "1.4 m/s" :vel)))))

0 comments on commit 853ef5d

Please sign in to comment.