Atlas › Test

TestMap_MultiThreaded

Exact test identity: go.temporal.io/server/common/collection/TestMap_MultiThreaded

Package
go.temporal.io/server/common/collection
Suite / test hierarchy
TestMap_MultiThreaded
Test
TestMap_MultiThreaded
Introduced at
TestMap_MultiThreaded Frontier kind: Test frontier
Covered ranges
11
Covered lines
45
Covered files
1

Covered source

Expand a file to inspect source; the > gutter marks covered lines.

go.temporal.io/server/common/collection/sync_map.go 45 covered LOC · 11 ranges

Open complete file

15 }
16
17 > func NewSyncMap[K comparable, V any]() SyncMap[K, V] { sync_map.go
18 > return SyncMap[K, V]{
19 > RWMutex: &sync.RWMutex{},
20 > contents: make(map[K]V),
21 > }
22 > }
23
24 > func (m *SyncMap[K, V]) Get(key K) (value V, ok bool) { sync_map.go
25 > m.RLock()
26 > defer m.RUnlock()
27 > value, ok = m.contents[key]
28 > return
29 > }
30
31 > func (m *SyncMap[K, V]) GetOrSet(key K, value V) (v V, exist bool) { sync_map.go
32 > m.RLock()
33 > currentValue, ok := m.contents[key]
34 > m.RUnlock()
35 > if ok {
36 > return currentValue, ok sync_map.go
37 > }
38
39 > m.Lock() sync_map.go
40 > defer m.Unlock()
41 > currentValue, ok = m.contents[key]
42 > if ok {
43 return currentValue, ok
44 }
45 > m.contents[key] = value sync_map.go
46 > return value, false
47 }
48
49 > func (m *SyncMap[K, V]) Set(key K, value V) { sync_map.go
50 > m.Lock()
51 > defer m.Unlock()
52 > m.contents[key] = value
53 > }
54
55 func (m *SyncMap[K, V]) Delete(key K) {
59 }
60
61 > func (m *SyncMap[K, V]) Pop(key K) (value V, ok bool) { sync_map.go
62 > m.Lock()
63 > defer m.Unlock()
64 > value, ok = m.contents[key]
65 > if ok {
66 > delete(m.contents, key) sync_map.go
67 > }
68 > return value, ok sync_map.go
69 }
70
71 > func (m *SyncMap[K, V]) PopAll() map[K]V { sync_map.go
72 > m.Lock()
73 > defer m.Unlock()
74 > contents := maps.Clone(m.contents)
75 > clear(m.contents)
76 > return contents
77 > }