Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #26 - RAMInBytes Bug #27

Merged
merged 1 commit into from
Dec 21, 2017
Merged

Fix #26 - RAMInBytes Bug #27

merged 1 commit into from
Dec 21, 2017

Conversation

FlorinAsavoaie
Copy link
Contributor

RAMInBytes wasn't able to parse the output of BytesSize until now.

Signed-off-by: Florin Asavoaie FlorinAsavoaie@users.noreply.github.com

RAMInBytes wasn't able to parse the output of BytesSize until now.

Signed-off-by: Florin Asavoaie <FlorinAsavoaie@users.noreply.github.com>
@FlorinAsavoaie
Copy link
Contributor Author

@thaJeztah Not sure who can look at this, pinging you so that someone is aware about the PR.

Copy link
Contributor

@dnephin dnephin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@@ -116,6 +116,8 @@ func TestRAMInBytes(t *testing.T) {
assertSuccessEquals(t, 32*KiB, RAMInBytes, "32K")
assertSuccessEquals(t, 32*KiB, RAMInBytes, "32kb")
assertSuccessEquals(t, 32*KiB, RAMInBytes, "32Kb")
assertSuccessEquals(t, 32*KiB, RAMInBytes, "32Kib")
assertSuccessEquals(t, 32*KiB, RAMInBytes, "32KIB")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at these, I wonder if it's correct that we treat kB, KiB and KB equal; from https://en.wikipedia.org/wiki/Kilobyte

screen shot 2017-12-21 at 18 38 01

32 KB == 32 KiB == 32768 byte, but 32kB == 32000 byte

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, wondering if I'm reading KB (JEDEC) correctly in that table, so please double-check 😅

Copy link
Contributor Author

@FlorinAsavoaie FlorinAsavoaie Dec 21, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, that was, obviously, already there. What I added should be the correct behavior imho. However, I wonder how many things will break if we decide to mess with it.

On the other hand, there's no function here to make a difference between KB and KiB, it just depends on what function does the user of the library call.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I noticed it was there 😞 not sure what's best; perhaps we need additional functions

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, I don't think this module is organized in such a way to properly support the standards. I'd rather go for a rebuild of this module (go-units2 or go-standard-units :D) and organize the functions something like ReadHumanSizeBinary which properly parses IEC and JEDEC, then ReadHumanSizeDecimal which properly parses metric data. Also organize those maps and regexes per "Metric/Decimal" and "Binary/IEC/JEDEC".

My guess is that it would break a lot of stuff because these conventions are badly used all around.

Until then, would you think this is a blocker to merge this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, this change doesn't make things worse, so don't see a reason to not go ahead.

Let me know if you're interested in a follow up for those things though!

Copy link
Member

@thaJeztah thaJeztah left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@thaJeztah thaJeztah merged commit d597585 into docker:master Dec 21, 2017
@lsthornt lsthornt mentioned this pull request Apr 9, 2018
thaJeztah added a commit to thaJeztah/containerd that referenced this pull request Apr 23, 2019
relevant changes:

- docker/go-units#19 make 1 second not to be plural seconds
- docker/go-units#20 Add `HumanSizeWithPrecision` function
- docker/go-units#21 change week display rule
- docker/go-units#22 Better human duration precision
- docker/go-units#23 Removes spaces before unit
- docker/go-units#27 Fix containerd#26 - RAMInBytes Bug
- docker/go-units#33 Fix handling of unlimited (-1) ulimit values
- docker/go-units#34 Revert 46 minute threshold

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
jadams pushed a commit to jadams/kali-vm that referenced this pull request Sep 30, 2022
It's not exactly a nitpick. debos uses github.com/docker/go-units to
parse the size, and docker/go-units is fundamentally broken, as it
parses both GiB anb GB as GB. It's a known issue that's been there
forever, and will probably never be fixed because backward compat
(that's my guess).

Cf. <docker/go-units#31>, or better
<docker/go-units#27 (comment)>.

So let's make sure that we talk about GB, because that's what happens in
practice.
jadams pushed a commit to jadams/kali-vm that referenced this pull request Sep 30, 2022
It's not exactly a nitpick. debos uses github.com/docker/go-units to
parse the size, and docker/go-units is fundamentally broken, as it
parses both GiB anb GB as GB. It's a known issue that's been there
forever, and will probably never be fixed because backward compat
(that's my guess).

Cf. <docker/go-units#31>, or better
<docker/go-units#27 (comment)>.

So let's make sure that we talk about GB, because that's what happens in
practice.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants