diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9611a85..7c9d084 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,9 +31,7 @@ jobs: run: go mod download - name: Run tests - run: | - echo "CGO_ENABLED=0" >> $env:GITHUB_ENV - go test -race -covermode atomic -coverprofile=covprofile ./... + run: go test -race -covermode atomic -coverprofile=covprofile ./... - if: github.event_name != 'pull_request' name: Send coverage diff --git a/ipc_posix.c b/ipc/posix/posix.c similarity index 100% rename from ipc_posix.c rename to ipc/posix/posix.c diff --git a/ipc_posix.go b/ipc/posix/posix.go similarity index 66% rename from ipc_posix.go rename to ipc/posix/posix.go index 3418f48..440b078 100644 --- a/ipc_posix.go +++ b/ipc/posix/posix.go @@ -1,10 +1,10 @@ //go:build !windows -package astikit +package astiposix //#include //#include -//#include "ipc_posix.h" +//#include "posix.h" import "C" import ( "errors" @@ -17,7 +17,7 @@ import ( "unsafe" ) -type PosixSharedMemory struct { +type SharedMemory struct { addr unsafe.Pointer cname string fd *C.int @@ -26,9 +26,9 @@ type PosixSharedMemory struct { unlink bool } -func newPosixSharedMemory(name string, flags, mode int, cb func(shm *PosixSharedMemory) error) (shm *PosixSharedMemory, err error) { +func newSharedMemory(name string, flags, mode int, cb func(shm *SharedMemory) error) (shm *SharedMemory, err error) { // Create shared memory - shm = &PosixSharedMemory{name: name} + shm = &SharedMemory{name: name} // To have a similar behavior with python, we need to handle the leading slash the same way: // - make sure the "public" name has no leading "/" @@ -84,8 +84,8 @@ func newPosixSharedMemory(name string, flags, mode int, cb func(shm *PosixShared return } -func CreatePosixSharedMemory(name string, size int) (*PosixSharedMemory, error) { - return newPosixSharedMemory(name, os.O_CREATE|os.O_EXCL|os.O_RDWR, 0600, func(shm *PosixSharedMemory) (err error) { +func CreateSharedMemory(name string, size int) (*SharedMemory, error) { + return newSharedMemory(name, os.O_CREATE|os.O_EXCL|os.O_RDWR, 0600, func(shm *SharedMemory) (err error) { // Shared memory needs to be unlink on close shm.unlink = true @@ -99,11 +99,11 @@ func CreatePosixSharedMemory(name string, size int) (*PosixSharedMemory, error) }) } -func OpenPosixSharedMemory(name string) (*PosixSharedMemory, error) { - return newPosixSharedMemory(name, os.O_RDWR, 0600, nil) +func OpenSharedMemory(name string) (*SharedMemory, error) { + return newSharedMemory(name, os.O_RDWR, 0600, nil) } -func (shm *PosixSharedMemory) Close() error { +func (shm *SharedMemory) Close() error { // Unlink if shm.unlink { // Get c name @@ -138,7 +138,7 @@ func (shm *PosixSharedMemory) Close() error { return nil } -func (shm *PosixSharedMemory) Write(src unsafe.Pointer, size int) error { +func (shm *SharedMemory) Write(src unsafe.Pointer, size int) error { // Unmapped if shm.addr == nil { return errors.New("astikit: shared memory is unmapped") @@ -149,7 +149,7 @@ func (shm *PosixSharedMemory) Write(src unsafe.Pointer, size int) error { return nil } -func (shm *PosixSharedMemory) WriteBytes(b []byte) error { +func (shm *SharedMemory) WriteBytes(b []byte) error { // Get c bytes cb := C.CBytes(b) defer C.free(cb) @@ -158,7 +158,7 @@ func (shm *PosixSharedMemory) WriteBytes(b []byte) error { return shm.Write(cb, len(b)) } -func (shm *PosixSharedMemory) ReadBytes(size int) ([]byte, error) { +func (shm *SharedMemory) ReadBytes(size int) ([]byte, error) { // Unmapped if shm.addr == nil { return nil, errors.New("astikit: shared memory is unmapped") @@ -168,39 +168,39 @@ func (shm *PosixSharedMemory) ReadBytes(size int) ([]byte, error) { return C.GoBytes(shm.addr, C.int(size)), nil } -func (shm *PosixSharedMemory) Name() string { +func (shm *SharedMemory) Name() string { return shm.name } -func (shm *PosixSharedMemory) Size() int { +func (shm *SharedMemory) Size() int { return shm.size } -func (shm *PosixSharedMemory) Addr() unsafe.Pointer { +func (shm *SharedMemory) Addr() unsafe.Pointer { return shm.addr } -type PosixVariableSizeSharedMemoryWriter struct { +type VariableSizeSharedMemoryWriter struct { m sync.Mutex // Locks write operations prefix string - shm *PosixSharedMemory + shm *SharedMemory } -func NewPosixVariableSizeSharedMemoryWriter(prefix string) *PosixVariableSizeSharedMemoryWriter { - return &PosixVariableSizeSharedMemoryWriter{prefix: prefix} +func NewVariableSizeSharedMemoryWriter(prefix string) *VariableSizeSharedMemoryWriter { + return &VariableSizeSharedMemoryWriter{prefix: prefix} } -func (w *PosixVariableSizeSharedMemoryWriter) closeSharedMemory() { +func (w *VariableSizeSharedMemoryWriter) closeSharedMemory() { if w.shm != nil { w.shm.Close() } } -func (w *PosixVariableSizeSharedMemoryWriter) Close() { +func (w *VariableSizeSharedMemoryWriter) Close() { w.closeSharedMemory() } -func (w *PosixVariableSizeSharedMemoryWriter) Write(src unsafe.Pointer, size int) (ro PosixVariableSizeSharedMemoryReadOptions, err error) { +func (w *VariableSizeSharedMemoryWriter) Write(src unsafe.Pointer, size int) (ro VariableSizeSharedMemoryReadOptions, err error) { // Lock w.m.Lock() defer w.m.Unlock() @@ -211,8 +211,8 @@ func (w *PosixVariableSizeSharedMemoryWriter) Write(src unsafe.Pointer, size int w.closeSharedMemory() // Create shared memory - var shm *PosixSharedMemory - if shm, err = CreatePosixSharedMemory(w.prefix+"-"+strconv.Itoa(size), size); err != nil { + var shm *SharedMemory + if shm, err = CreateSharedMemory(w.prefix+"-"+strconv.Itoa(size), size); err != nil { err = fmt.Errorf("astikit: creating shared memory failed: %w", err) return } @@ -228,14 +228,14 @@ func (w *PosixVariableSizeSharedMemoryWriter) Write(src unsafe.Pointer, size int } // Create read options - ro = PosixVariableSizeSharedMemoryReadOptions{ + ro = VariableSizeSharedMemoryReadOptions{ Name: w.shm.Name(), Size: size, } return } -func (w *PosixVariableSizeSharedMemoryWriter) WriteBytes(b []byte) (PosixVariableSizeSharedMemoryReadOptions, error) { +func (w *VariableSizeSharedMemoryWriter) WriteBytes(b []byte) (VariableSizeSharedMemoryReadOptions, error) { // Get c bytes cb := C.CBytes(b) defer C.free(cb) @@ -244,31 +244,31 @@ func (w *PosixVariableSizeSharedMemoryWriter) WriteBytes(b []byte) (PosixVariabl return w.Write(cb, len(b)) } -type PosixVariableSizeSharedMemoryReader struct { +type VariableSizeSharedMemoryReader struct { m sync.Mutex // Locks read operations - shm *PosixSharedMemory + shm *SharedMemory } -func NewPosixVariableSizeSharedMemoryReader() *PosixVariableSizeSharedMemoryReader { - return &PosixVariableSizeSharedMemoryReader{} +func NewVariableSizeSharedMemoryReader() *VariableSizeSharedMemoryReader { + return &VariableSizeSharedMemoryReader{} } -func (r *PosixVariableSizeSharedMemoryReader) closeSharedMemory() { +func (r *VariableSizeSharedMemoryReader) closeSharedMemory() { if r.shm != nil { r.shm.Close() } } -func (r *PosixVariableSizeSharedMemoryReader) Close() { +func (r *VariableSizeSharedMemoryReader) Close() { r.closeSharedMemory() } -type PosixVariableSizeSharedMemoryReadOptions struct { +type VariableSizeSharedMemoryReadOptions struct { Name string `json:"name"` Size int `json:"size"` } -func (r *PosixVariableSizeSharedMemoryReader) ReadBytes(o PosixVariableSizeSharedMemoryReadOptions) (b []byte, err error) { +func (r *VariableSizeSharedMemoryReader) ReadBytes(o VariableSizeSharedMemoryReadOptions) (b []byte, err error) { // Lock r.m.Lock() defer r.m.Unlock() @@ -279,8 +279,8 @@ func (r *PosixVariableSizeSharedMemoryReader) ReadBytes(o PosixVariableSizeShare r.closeSharedMemory() // Open shared memory - var shm *PosixSharedMemory - if shm, err = OpenPosixSharedMemory(o.Name); err != nil { + var shm *SharedMemory + if shm, err = OpenSharedMemory(o.Name); err != nil { err = fmt.Errorf("astikit: opening shared memory failed: %w", err) return } diff --git a/ipc_posix.h b/ipc/posix/posix.h similarity index 100% rename from ipc_posix.h rename to ipc/posix/posix.h diff --git a/ipc_posix_test.go b/ipc/posix/posix_test.go similarity index 85% rename from ipc_posix_test.go rename to ipc/posix/posix_test.go index d615369..315e633 100644 --- a/ipc_posix_test.go +++ b/ipc/posix/posix_test.go @@ -1,14 +1,14 @@ //go:build !windows -package astikit +package astiposix import ( "bytes" "testing" ) -func TestPosixSharedMemory(t *testing.T) { - sm1, err := CreatePosixSharedMemory("/test", 8) +func TestSharedMemory(t *testing.T) { + sm1, err := CreateSharedMemory("/test", 8) if err != nil { t.Fatalf("expected no error, got %s", err) } @@ -22,7 +22,7 @@ func TestPosixSharedMemory(t *testing.T) { if e, g := "test", sm1.Name(); e != g { t.Fatalf("expected %v, got %v", e, g) } - if _, err = CreatePosixSharedMemory("/test", 8); err == nil { + if _, err = CreateSharedMemory("/test", 8); err == nil { t.Fatal("expected error, got nil") } @@ -31,7 +31,7 @@ func TestPosixSharedMemory(t *testing.T) { t.Fatalf("expected no error, got %s", err) } - sm2, err := OpenPosixSharedMemory("test") + sm2, err := OpenSharedMemory("test") if err != nil { t.Fatalf("expected no error, got %s", err) } @@ -65,10 +65,10 @@ func TestPosixSharedMemory(t *testing.T) { } } -func TestPosixVariableSizeSharedMemory(t *testing.T) { - w := NewPosixVariableSizeSharedMemoryWriter("test-1") +func TestVariableSizeSharedMemory(t *testing.T) { + w := NewVariableSizeSharedMemoryWriter("test-1") defer w.Close() - r := NewPosixVariableSizeSharedMemoryReader() + r := NewVariableSizeSharedMemoryReader() defer r.Close() b1 := []byte("test") diff --git a/ipc_systemv.c b/ipc/systemv/systemv.c similarity index 100% rename from ipc_systemv.c rename to ipc/systemv/systemv.c diff --git a/ipc_systemv.go b/ipc/systemv/systemv.go similarity index 66% rename from ipc_systemv.go rename to ipc/systemv/systemv.go index 9f922b4..6312399 100644 --- a/ipc_systemv.go +++ b/ipc/systemv/systemv.go @@ -1,11 +1,11 @@ //go:build !windows -package astikit +package astisystemv //#include //#include //#include -//#include "ipc_systemv.h" +//#include "systemv.h" import "C" import ( "errors" @@ -14,9 +14,11 @@ import ( "syscall" "time" "unsafe" + + "github.com/asticode/go-astikit" ) -func NewSystemVKey(projectID int, path string) (int, error) { +func NewKey(projectID int, path string) (int, error) { // Get c path cpath := C.CString(path) defer C.free(unsafe.Pointer(cpath)) @@ -35,33 +37,33 @@ const ( IpcExclusive = C.IPC_EXCL ) -type SystemVSemaphore struct { +type Semaphore struct { id C.int key int } -func newSystemVSemaphore(key int, flags int) (*SystemVSemaphore, error) { +func newSemaphore(key int, flags int) (*Semaphore, error) { // Get id var errno C.int id := C.astikit_sem_get(C.int(key), C.int(flags), &errno) if id < 0 { return nil, fmt.Errorf("astikit: sem_get failed: %w", syscall.Errno(errno)) } - return &SystemVSemaphore{ + return &Semaphore{ id: id, key: key, }, nil } -func CreateSystemVSemaphore(key, flags int) (*SystemVSemaphore, error) { - return newSystemVSemaphore(key, flags) +func CreateSemaphore(key, flags int) (*Semaphore, error) { + return newSemaphore(key, flags) } -func OpenSystemVSemaphore(key int) (*SystemVSemaphore, error) { - return newSystemVSemaphore(key, 0) +func OpenSemaphore(key int) (*Semaphore, error) { + return newSemaphore(key, 0) } -func (s *SystemVSemaphore) Close() error { +func (s *Semaphore) Close() error { // Already closed if s.id == -1 { return nil @@ -79,7 +81,7 @@ func (s *SystemVSemaphore) Close() error { return nil } -func (s *SystemVSemaphore) Lock() error { +func (s *Semaphore) Lock() error { // Closed if s.id == -1 { return errors.New("astikit: semaphore is closed") @@ -94,7 +96,7 @@ func (s *SystemVSemaphore) Lock() error { return nil } -func (s *SystemVSemaphore) Unlock() error { +func (s *Semaphore) Unlock() error { // Closed if s.id == -1 { return errors.New("astikit: semaphore is closed") @@ -109,17 +111,17 @@ func (s *SystemVSemaphore) Unlock() error { return nil } -func (s *SystemVSemaphore) Key() int { +func (s *Semaphore) Key() int { return s.key } -type SystemVSharedMemory struct { +type SharedMemory struct { addr unsafe.Pointer id C.int key int } -func newSystemVSharedMemory(key, size int, flags int) (shm *SystemVSharedMemory, err error) { +func newSharedMemory(key, size int, flags int) (shm *SharedMemory, err error) { // Get id var errno C.int id := C.astikit_shm_get(C.int(key), C.int(size), C.int(flags), &errno) @@ -129,7 +131,7 @@ func newSystemVSharedMemory(key, size int, flags int) (shm *SystemVSharedMemory, } // Create shared memory - shm = &SystemVSharedMemory{ + shm = &SharedMemory{ id: id, key: key, } @@ -153,15 +155,15 @@ func newSystemVSharedMemory(key, size int, flags int) (shm *SystemVSharedMemory, return } -func CreateSystemVSharedMemory(key, size, flags int) (*SystemVSharedMemory, error) { - return newSystemVSharedMemory(key, size, flags) +func CreateSharedMemory(key, size, flags int) (*SharedMemory, error) { + return newSharedMemory(key, size, flags) } -func OpenSystemVSharedMemory(key int) (*SystemVSharedMemory, error) { - return newSystemVSharedMemory(key, 0, 0) +func OpenSharedMemory(key int) (*SharedMemory, error) { + return newSharedMemory(key, 0, 0) } -func (shm *SystemVSharedMemory) Close() error { +func (shm *SharedMemory) Close() error { // Already closed if shm.id == -1 { return nil @@ -180,7 +182,7 @@ func (shm *SystemVSharedMemory) Close() error { return nil } -func (shm *SystemVSharedMemory) Write(src unsafe.Pointer, size int) error { +func (shm *SharedMemory) Write(src unsafe.Pointer, size int) error { // Closed if shm.id == -1 { return errors.New("astikit: shared memory is closed") @@ -191,7 +193,7 @@ func (shm *SystemVSharedMemory) Write(src unsafe.Pointer, size int) error { return nil } -func (shm *SystemVSharedMemory) WriteBytes(b []byte) error { +func (shm *SharedMemory) WriteBytes(b []byte) error { // Get c bytes cb := C.CBytes(b) defer C.free(cb) @@ -200,15 +202,15 @@ func (shm *SystemVSharedMemory) WriteBytes(b []byte) error { return shm.Write(cb, len(b)) } -func (shm *SystemVSharedMemory) Addr() unsafe.Pointer { +func (shm *SharedMemory) Addr() unsafe.Pointer { return shm.addr } -func (shm *SystemVSharedMemory) Key() int { +func (shm *SharedMemory) Key() int { return shm.key } -func (shm *SystemVSharedMemory) ReadBytes(size int) ([]byte, error) { +func (shm *SharedMemory) ReadBytes(size int) ([]byte, error) { // Closed if shm.id == -1 { return nil, errors.New("astikit: shared memory is closed") @@ -218,39 +220,39 @@ func (shm *SystemVSharedMemory) ReadBytes(size int) ([]byte, error) { return C.GoBytes(shm.addr, C.int(size)), nil } -type SystemVSemaphoredSharedMemoryWriter struct { +type SemaphoredSharedMemoryWriter struct { m sync.Mutex // Locks write operations - sem *SystemVSemaphore - shm *SystemVSharedMemory + sem *Semaphore + shm *SharedMemory shmAt int64 shmSize int } -func NewSystemVSemaphoredSharedMemoryWriter() *SystemVSemaphoredSharedMemoryWriter { - return &SystemVSemaphoredSharedMemoryWriter{} +func NewSemaphoredSharedMemoryWriter() *SemaphoredSharedMemoryWriter { + return &SemaphoredSharedMemoryWriter{} } -func (w *SystemVSemaphoredSharedMemoryWriter) closeSemaphore() { +func (w *SemaphoredSharedMemoryWriter) closeSemaphore() { if w.sem != nil { w.sem.Close() } } -func (w *SystemVSemaphoredSharedMemoryWriter) closeSharedMemory() { +func (w *SemaphoredSharedMemoryWriter) closeSharedMemory() { if w.shm != nil { w.shm.Close() } } -func (w *SystemVSemaphoredSharedMemoryWriter) Close() { +func (w *SemaphoredSharedMemoryWriter) Close() { w.closeSemaphore() w.closeSharedMemory() } -func (w *SystemVSemaphoredSharedMemoryWriter) generateRandomKey(f func(key int) error) error { +func (w *SemaphoredSharedMemoryWriter) generateRandomKey(f func(key int) error) error { try := 0 for { - key := int(int32(randSrc.Int63())) + key := int(int32(astikit.RandSource.Int63())) if key == int(C.IPC_PRIVATE) { continue } @@ -265,7 +267,7 @@ func (w *SystemVSemaphoredSharedMemoryWriter) generateRandomKey(f func(key int) } } -func (w *SystemVSemaphoredSharedMemoryWriter) Write(src unsafe.Pointer, size int) (ro *SystemVSemaphoredSharedMemoryReadOptions, err error) { +func (w *SemaphoredSharedMemoryWriter) Write(src unsafe.Pointer, size int) (ro *SemaphoredSharedMemoryReadOptions, err error) { // Lock w.m.Lock() defer w.m.Unlock() @@ -279,8 +281,8 @@ func (w *SystemVSemaphoredSharedMemoryWriter) Write(src unsafe.Pointer, size int // Generate random key if err = w.generateRandomKey(func(key int) (err error) { // Create shared memory - var shm *SystemVSharedMemory - if shm, err = CreateSystemVSharedMemory(key, size, IpcCreate|IpcExclusive|0666); err != nil { + var shm *SharedMemory + if shm, err = CreateSharedMemory(key, size, IpcCreate|IpcExclusive|0666); err != nil { err = fmt.Errorf("astikit: creating shared memory failed: %w", err) return } @@ -301,8 +303,8 @@ func (w *SystemVSemaphoredSharedMemoryWriter) Write(src unsafe.Pointer, size int // Generate random key if err = w.generateRandomKey(func(key int) (err error) { // Create semaphore - var sem *SystemVSemaphore - if sem, err = CreateSystemVSemaphore(key, IpcCreate|IpcExclusive|0666); err != nil { + var sem *Semaphore + if sem, err = CreateSemaphore(key, IpcCreate|IpcExclusive|0666); err != nil { err = fmt.Errorf("astikit: creating semaphore failed: %w", err) return } @@ -335,7 +337,7 @@ func (w *SystemVSemaphoredSharedMemoryWriter) Write(src unsafe.Pointer, size int } // Create read options - ro = &SystemVSemaphoredSharedMemoryReadOptions{ + ro = &SemaphoredSharedMemoryReadOptions{ SemaphoreKey: w.sem.Key(), SharedMemoryAt: w.shmAt, SharedMemoryKey: w.shm.Key(), @@ -344,7 +346,7 @@ func (w *SystemVSemaphoredSharedMemoryWriter) Write(src unsafe.Pointer, size int return } -func (w *SystemVSemaphoredSharedMemoryWriter) WriteBytes(b []byte) (*SystemVSemaphoredSharedMemoryReadOptions, error) { +func (w *SemaphoredSharedMemoryWriter) WriteBytes(b []byte) (*SemaphoredSharedMemoryReadOptions, error) { // Get c bytes cb := C.CBytes(b) defer C.free(cb) @@ -353,42 +355,42 @@ func (w *SystemVSemaphoredSharedMemoryWriter) WriteBytes(b []byte) (*SystemVSema return w.Write(cb, len(b)) } -type SystemVSemaphoredSharedMemoryReader struct { +type SemaphoredSharedMemoryReader struct { m sync.Mutex // Locks read operations - sem *SystemVSemaphore - shm *SystemVSharedMemory + sem *Semaphore + shm *SharedMemory shmAt int64 } -func NewSystemVSemaphoredSharedMemoryReader() *SystemVSemaphoredSharedMemoryReader { - return &SystemVSemaphoredSharedMemoryReader{} +func NewSemaphoredSharedMemoryReader() *SemaphoredSharedMemoryReader { + return &SemaphoredSharedMemoryReader{} } -func (r *SystemVSemaphoredSharedMemoryReader) closeSemaphore() { +func (r *SemaphoredSharedMemoryReader) closeSemaphore() { if r.sem != nil { r.sem.Close() } } -func (r *SystemVSemaphoredSharedMemoryReader) closeSharedMemory() { +func (r *SemaphoredSharedMemoryReader) closeSharedMemory() { if r.shm != nil { r.shm.Close() } } -func (r *SystemVSemaphoredSharedMemoryReader) Close() { +func (r *SemaphoredSharedMemoryReader) Close() { r.closeSemaphore() r.closeSharedMemory() } -type SystemVSemaphoredSharedMemoryReadOptions struct { +type SemaphoredSharedMemoryReadOptions struct { SemaphoreKey int SharedMemoryAt int64 SharedMemoryKey int Size int } -func (r *SystemVSemaphoredSharedMemoryReader) ReadBytes(o *SystemVSemaphoredSharedMemoryReadOptions) (b []byte, err error) { +func (r *SemaphoredSharedMemoryReader) ReadBytes(o *SemaphoredSharedMemoryReadOptions) (b []byte, err error) { // Lock r.m.Lock() defer r.m.Unlock() @@ -399,8 +401,8 @@ func (r *SystemVSemaphoredSharedMemoryReader) ReadBytes(o *SystemVSemaphoredShar r.closeSharedMemory() // Open shared memory - var shm *SystemVSharedMemory - if shm, err = OpenSystemVSharedMemory(o.SharedMemoryKey); err != nil { + var shm *SharedMemory + if shm, err = OpenSharedMemory(o.SharedMemoryKey); err != nil { err = fmt.Errorf("astikit: opening shared memory failed: %w", err) return } @@ -416,8 +418,8 @@ func (r *SystemVSemaphoredSharedMemoryReader) ReadBytes(o *SystemVSemaphoredShar r.closeSemaphore() // Open semaphore - var sem *SystemVSemaphore - if sem, err = OpenSystemVSemaphore(o.SemaphoreKey); err != nil { + var sem *Semaphore + if sem, err = OpenSemaphore(o.SemaphoreKey); err != nil { err = fmt.Errorf("astikit: opening semaphore failed: %w", err) return } diff --git a/ipc_systemv.h b/ipc/systemv/systemv.h similarity index 100% rename from ipc_systemv.h rename to ipc/systemv/systemv.h diff --git a/ipc_systemv_test.go b/ipc/systemv/systemv_test.go similarity index 81% rename from ipc_systemv_test.go rename to ipc/systemv/systemv_test.go index 05a8851..f4822b0 100644 --- a/ipc_systemv_test.go +++ b/ipc/systemv/systemv_test.go @@ -1,25 +1,25 @@ //go:build !windows -package astikit +package astisystemv import ( "bytes" "testing" ) -func TestNewSystemVKey(t *testing.T) { - _, err := NewSystemVKey(1, "testdata/ipc/invalid") +func TestNewKey(t *testing.T) { + _, err := NewKey(1, "../../testdata/ipc/invalid") if err == nil { t.Fatal("expected an error, got none") } - if _, err = NewSystemVKey(1, "testdata/ipc/f"); err != nil { + if _, err = NewKey(1, "../../testdata/ipc/f"); err != nil { t.Fatalf("expected no error, got %s", err) } } -func TestSystemVSemaphore(t *testing.T) { +func TestSemaphore(t *testing.T) { const key = 1 - s1, err := CreateSystemVSemaphore(key, IpcCreate|IpcExclusive|0666) + s1, err := CreateSemaphore(key, IpcCreate|IpcExclusive|0666) if err != nil { t.Fatalf("expected no error, got %s", err) } @@ -33,7 +33,7 @@ func TestSystemVSemaphore(t *testing.T) { if err = s1.Unlock(); err != nil { t.Fatalf("expected no error, got %s", err) } - s2, err := OpenSystemVSemaphore(key) + s2, err := OpenSemaphore(key) if err != nil { t.Fatalf("expected no error, got %s", err) } @@ -70,9 +70,9 @@ func TestSystemVSemaphore(t *testing.T) { } } -func TestSystemVSharedMemory(t *testing.T) { +func TestSharedMemory(t *testing.T) { const key = 1 - sm1, err := CreateSystemVSharedMemory(key, 10, IpcCreate|IpcExclusive|0666) + sm1, err := CreateSharedMemory(key, 10, IpcCreate|IpcExclusive|0666) if err != nil { t.Fatalf("expected no error, got %s", err) } @@ -87,7 +87,7 @@ func TestSystemVSharedMemory(t *testing.T) { if err := sm1.WriteBytes(b1); err != nil { t.Fatalf("expected no error, got %s", err) } - sm2, err := OpenSystemVSharedMemory(key) + sm2, err := OpenSharedMemory(key) if err != nil { t.Fatalf("expected no error, got %s", err) } @@ -110,23 +110,23 @@ func TestSystemVSharedMemory(t *testing.T) { } } -func TestSystemVSemaphoredSharedMemory(t *testing.T) { - w1 := NewSystemVSemaphoredSharedMemoryWriter() +func TestSemaphoredSharedMemory(t *testing.T) { + w1 := NewSemaphoredSharedMemoryWriter() defer w1.Close() - w2 := NewSystemVSemaphoredSharedMemoryWriter() + w2 := NewSemaphoredSharedMemoryWriter() defer w2.Close() - r1 := NewSystemVSemaphoredSharedMemoryReader() + r1 := NewSemaphoredSharedMemoryReader() defer r1.Close() - r2 := NewSystemVSemaphoredSharedMemoryReader() + r2 := NewSemaphoredSharedMemoryReader() defer r2.Close() b1 := []byte("test") semKeys := make(map[int]bool) - shmAts := make(map[*SystemVSemaphoredSharedMemoryWriter]int64) + shmAts := make(map[*SemaphoredSharedMemoryWriter]int64) shmKeys := make(map[int]bool) for _, v := range []struct { - r *SystemVSemaphoredSharedMemoryReader - w *SystemVSemaphoredSharedMemoryWriter + r *SemaphoredSharedMemoryReader + w *SemaphoredSharedMemoryWriter }{ { r: r1, diff --git a/rand.go b/rand.go index c10e6db..6ddd8aa 100644 --- a/rand.go +++ b/rand.go @@ -13,7 +13,7 @@ const ( randLetterIdxMax = 63 / randLetterIdxBits // # of letter indices fitting in 63 bits ) -var randSrc = rand.NewSource(time.Now().UnixNano()) +var RandSource = rand.NewSource(time.Now().UnixNano()) // RandStr generates a random string of length n // https://stackoverflow.com/questions/22892120/how-to-generate-a-random-string-of-a-fixed-length-in-golang @@ -21,9 +21,9 @@ func RandStr(n int) string { sb := strings.Builder{} sb.Grow(n) // A randSrc.Int63() generates 63 random bits, enough for randLetterIdxMax characters! - for i, cache, remain := n-1, randSrc.Int63(), randLetterIdxMax; i >= 0; { + for i, cache, remain := n-1, RandSource.Int63(), randLetterIdxMax; i >= 0; { if remain == 0 { - cache, remain = randSrc.Int63(), randLetterIdxMax + cache, remain = RandSource.Int63(), randLetterIdxMax } if idx := int(cache & randLetterIdxMask); idx < len(randLetterBytes) { sb.WriteByte(randLetterBytes[idx])