Conversation
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/4/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/5/scoverage-report/ |
|
|
||
| object ByteFormatter { | ||
| def byteCountSI(bytes: Long): String = { | ||
| format(bytes, true) |
There was a problem hiding this comment.
Not sure how you feel about flag arguments but throwing in an alternative, e.g., format(value, multiplier) where the multiplier has only two cases (SI, Binary) and the list of symbols is derived from it with pattern matching.
|
|
||
| object DurationFormatter { | ||
| import ByteFormatter.{df0, df1, df2} | ||
| private val units = Seq((1000L, "ns"), (1000L, "us"), (1000L, "ms"), (60L, "sec"), (60L, "min"), (24L, "h")) |
There was a problem hiding this comment.
Why not μs and s? I'd suggest m instead of min, because while m is very common for durations, although techinically that's a meter, and d for days (also avois "days" vs "day") 🤷♂️ FWIW, Go (hence k8s and all infra stuff written in Go) formats durations as, e.g., 2d9h45m19s.
| } else { | ||
| val signum = if (bytes < 0) "-" else "" | ||
| val exponent = getExponent(absBytes, baseValue) | ||
| val divisor = Math.pow(baseValue.toDouble, exponent.toDouble) |
There was a problem hiding this comment.
Hmm. Seems both simpler and more precise to just return both exponent and divisor from getExponent. (In the recursive step, exponent becomes exponent+1 and divisor becomes divisor*baseValue.) Or just look it up like the unit perhaps.
| "TiB values" in { | ||
| ByteFormatter.byteCountBinary(1024L * 1024 * 1024 * 1024) mustBe "1 TiB" | ||
| ByteFormatter.byteCountBinary(1024L * 1024 * 1024 * 1024 * 1024 - 1) mustBe "1023 TiB" | ||
| } |
There was a problem hiding this comment.
How about larger values; can the unit lookup fail?
|
What's the context? |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/6/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/7/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/8/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/9/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/10/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/11/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/13/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/14/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/15/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/16/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/17/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/19/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/20/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/21/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/22/scoverage-report/ |
|
Click here for code coverage report: https://jenkins.flo.pub/job/flowcommerce/job/lib-util/job/PR-188/23/scoverage-report/ |
No description provided.