47 Commits

Author SHA1 Message Date
Yoshiyuki Mineo
f167a9d531 Add Compose method and corresponding tests (#79)
* Implemented the Compose function to create a Sonyflake ID from its components, including validation for start time, sequence, and machine ID.
* Added a new test, TestCompose, to verify the functionality of the Compose method, ensuring correct decomposition of generated IDs.
* Introduced a new error for invalid sequence numbers to enhance error handling in the Sonyflake package.
v1.3.0
2025-07-05 17:50:03 +09:00
Yoshiyuki Mineo
5c401f9c06 Make unit tests stabler (#78)
* Refactor Sonyflake to use a customizable time function for improved testability. Update currentElapsedTime and sleep methods to utilize the new time function instead of directly calling time.Now().

* Update TimeUnit in ToTime test to use time.Millisecond for improved accuracy in timestamp validation. Adjust time duration comparison to ensure correct validation of generated timestamps.

* Refactor TestNextID to use a customizable time function for improved accuracy in timestamp validation. Adjust time comparison to ensure expected results in generated IDs.

* Refactor TestNextID_InSequence to use a consistent start time for improved clarity in timestamp validation. Update max sequence comparison to ensure accurate validation of generated IDs.

* Refactor tests in sonyflake_test.go to replace fmt.Println with t.Log for better test output management. Update error handling to use errors.New for consistency.
2025-06-28 19:24:22 +09:00
Yoshiyuki Mineo
0cdef9e4fe Update TimeUnit in ToTime test to use 100 milliseconds for improved accuracy in timestamp validation. (#77) 2025-06-23 23:07:41 +09:00
Yoshiyuki Mineo
114716564a Fix time duration comparison in ToTime test to ensure correct validation of generated timestamps. (#76) 2025-06-23 21:45:29 +09:00
Yoshiyuki Mineo
2343cac676 Check compose args (#74)
* v2: take only 'bitsMachine' least significant bits from generated machine IDs so it doesn't corrupt the other ID parts (#72)

Co-authored-by: ok32 <e.starikoff@gmail.com>
Co-authored-by: Yoshiyuki Mineo <Yoshiyuki.Mineo@jp.sony.com>

* Refactor Sonyflake Compose method to return errors for invalid parameters and update related tests. Consolidate error handling for start time, sequence, and machine ID validations. Remove unused variable in tests for clarity.

---------

Co-authored-by: ok32 <artuh.gubanova@gmail.com>
Co-authored-by: ok32 <e.starikoff@gmail.com>
v2.2.0
2025-05-18 15:56:36 +09:00
Yoshiyuki Mineo
5347433c8c Enhance Sonyflake error handling by adding tests for invalid machine IDs, including cases for too large and negative values. (#73) 2025-05-18 15:16:04 +09:00
Yoshiyuki Mineo
774342570a Add Compose method (#71) v2.1.0 2025-05-07 13:17:30 +09:00
Yoshiyuki Mineo
59c47aeab1 Fix lint errors (#70) v2.0.2 2025-05-05 19:51:28 +09:00
Yoshiyuki Mineo
d764be18d5 Update README.md (#69)
* Update README.md

* Update README.md

* Update test-v2.yml

* Update test-v1.yml
v2.0.1
2025-05-05 14:46:40 +09:00
Yoshiyuki Mineo
7ee8f154df feat(v2): make bit assignment for time/sequence/machine customizable … (#68)
* feat(v2): make bit assignment for time/sequence/machine customizable via Settings; update all logic and tests

* gofmt
v2.0.0
2025-05-05 14:16:21 +09:00
Yoshiyuki Mineo
357b2ee5f0 Upgrade Sonyflake to v2 (#66)
* Add v2

* Introduce staticcheck

* Introduce golangci-lint

* Add error checks

* Add error checks

* Lint v2 code

* Improve CI trigger

* Use io.ReadAll

* Use int64

* Remove NewSonyflake

* Fix errors

* v2: Change MachineID, sequence, and AmazonEC2MachineID to int; update all usage and tests for type consistency

* docs: update Settings struct in README to use int for MachineID and CheckMachineID (v2)

* docs(v2): clarify Settings, StartTime, MachineID, and CheckMachineID comments and update README links and explanations

* docs(v2/mock): improve comments and docstrings for mock implementations

* docs(types): unify and clarify package and type docstrings for types.go in v1 and v2

* test(v2): refactor and modernize tests, improve error assertions, and update mocks for v2

* test(v2): normalize whitespace in pseudoSleep calls for consistency

* feat(v2): add configurable TimeUnit and refactor time handling for So… (#67)

* feat(v2): add configurable TimeUnit and refactor time handling for Sonyflake v2

* test(v2): add ToTime tests, clarify TimeUnit behavior, and update docs for v2

* gofmt
2025-05-05 10:53:08 +09:00
Yoshiyuki Mineo
8d195df6f7 Fix a missing link (#65) v1.2.1 2025-05-01 19:25:49 +09:00
Yoshiyuki Mineo
410eb250e3 Update Go versions (#64) 2025-05-01 19:15:37 +09:00
Yoshiyuki Mineo
94f43cfd99 Update Go versions (#60) 2024-10-13 22:30:52 +09:00
Yoshiyuki Mineo
b9b40b47a5 Update go versions (#54) 2024-04-30 15:50:36 +09:00
Yoshiyuki Mineo
a0558cef64 Link local (#53)
* Allow IPv4 Link Local addresses (#50)

* Allow IPv4 Link Local addresses

Allow the use of link local addresses

* Update sonyflake.go

* Update sonyflake.go

* Update a comment

---------

Co-authored-by: Flavio Crisciani <f.crisciani@gmail.com>
2024-04-30 15:06:58 +09:00
David E. Wheeler
fc2f84a086 Use net.IP.Equal instead of bytes.Equal (#49)
As suggested by go-staticcheck.
2023-11-06 14:32:46 +09:00
Yoshiyuki Mineo
06f9b47996 Introduce New function (#47)
* feat(Sonyflake): define error variables

* feat(Sonyflake): add New() function
- minor logic improvements
- return errors

* tests(Sonyflake): remove old TestNilSonyflake test function in favour of the New() function coverage

* gofmt

* Update error messages and comments

* Introduce New function

---------

Co-authored-by: Quetzy Garcia <quetzy.garcia@integrate.com>
v1.2.0
2023-08-14 01:27:55 +09:00
Yoshiyuki Mineo
18c4908321 Update go versions 2023-08-13 23:36:13 +09:00
Yoshiyuki Mineo
eafab81cd5 Update go versions (#43) 2023-05-04 02:08:54 +09:00
Yoshiyuki Mineo
597171da2e Increase coverage (#42)
* Introduce mocking framework and increase coverage (#22)

This change introduces two common golang patterns:

- types: this will allow fine-tuned control over imported
types by defining where they will be used and how

- mock: this allows the generation of mock constructors,
which allows for testing any individual path in a method by
"injecting" a mock method which matches the expected type

This change also increases test coverage to 100%

Co-authored-by: Yoshiyuki Mineo <Yoshiyuki.Mineo@jp.sony.com>

* gofmt

---------

Co-authored-by: Bradley Boutcher <btboutcher@icloud.com>
2023-05-04 00:08:20 +09:00
Yoshiyuki Mineo
cc94b60628 Check time order explicitly (#37)
* Add sortable test (#11)

* add TestSortableID to make sure that generated ID(s) can be sorted like you are using increment id database

* add TestSortableID to make sure that generated ID(s) can be sorted like you are using increment id database

Co-authored-by: Yoshiyuki Mineo <Yoshiyuki.Mineo@jp.sony.com>

* gofmt

* Check time order explicitly

Co-authored-by: Yusuf Syaifudin <yusuf.syaifudin@gmail.com>
2022-08-17 14:33:52 +09:00
Yoshiyuki Mineo
3719d006ac Add a note (#36) v1.1.0 2022-08-13 00:23:02 +09:00
Yoshiyuki Mineo
90e18212ad Add functions to get ID elements (#35)
* Refactoring

* Add functions to get ID elements
2022-08-12 18:42:10 +09:00
Yoshiyuki Mineo
809c515cc5 Introduce GitHub Actions (#34)
* Introduce GitHub Actions

* gofmt
2022-08-12 18:38:40 +09:00
Osamu TONOMORI
848d664cee Make testing simple (#20)
* Make testing simpler

* Remove testing deps

* Simplemize tests
2020-08-27 10:17:19 +09:00
Yoshiyuki Mineo
60e9d38e92 Merge pull request #19 from osamingo/set-go-stable-versions
Set Go stable versions to .travis.yml
2020-08-18 16:53:08 +09:00
Osamu TONOMORI
f68244fede Set Go stable versions 2020-08-10 16:05:22 +09:00
Osamu TONOMORI
963f058659 Remove sudo setting
Setting `sudo: false` is not recommended.
via/
https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration
2020-08-10 16:03:44 +09:00
Yoshiyuki Mineo
59cd942daa Update README.md 2019-10-07 16:50:43 +09:00
Yoshiyuki Mineo
3ffd8c4254 Update README.md 2019-10-07 16:40:37 +09:00
Yoshiyuki Mineo
4ae3f1aeaa Add go.mod and go.sum v1.0.0 2019-05-27 14:27:51 +09:00
Yoshiyuki Mineo
6d5bd61810 Golint requires a supported release of Go 2018-11-09 11:24:03 +09:00
Yoshiyuki Mineo
7a6e82f3b6 Merge pull request #6 from golint-fixer/master
Fix golint import path
2018-11-09 11:20:34 +09:00
golint fixer
52d338556e Fix golint import path 2018-10-25 09:36:52 -05:00
Yoshiyuki Mineo
fa881fb105 Merge pull request #3 from yuokada/feature/grcard
Fix ineffassign error
2016-05-30 11:15:00 +09:00
yuokada
24db3dfba6 Fix ineffassign error 2016-05-29 23:21:38 +09:00
yuokada
04f6255e27 Add a badge of goreportcard. 2016-05-28 23:00:03 +09:00
Yoshiyuki Mineo
829188d0aa golint requires Go 1.5 or later nowadays 2016-05-08 23:11:44 +09:00
Yoshiyuki Mineo
568f953b2b Use SVG for GoDoc button 2016-05-04 23:15:03 +09:00
Yoshiyuki Mineo
152b0c3130 Check if passing golint 2015-11-26 18:40:56 +09:00
Yoshiyuki Mineo
bd04110880 Check if the code is gofmt'ed 2015-11-26 18:36:40 +09:00
Yoshiyuki Mineo
c4c695c9ad Show the code coverage 2015-09-29 10:16:01 +09:00
Yoshiyuki Mineo
f633d51479 Track the code coverage 2015-09-27 15:21:19 +09:00
Yoshiyuki Mineo
63503fdccf Add the link to godoc.org 2015-06-01 18:05:48 +09:00
Yoshiyuki Mineo
4a1a009a2e Show the build status 2015-06-01 17:34:36 +09:00
Yoshiyuki Mineo
ee7af3da63 Initial commit 2015-06-01 16:45:19 +09:00