(t *testing.T)
| 163 | } |
| 164 | |
| 165 | func TestSharedState_PreforkSafeWithSharedStorage(t *testing.T) { |
| 166 | t.Parallel() |
| 167 | |
| 168 | store := newSharedStateMemoryStorage(t) |
| 169 | workerA := New(Config{AppName: "prefork-app", SharedStorage: store}) |
| 170 | workerB := New(Config{AppName: "prefork-app", SharedStorage: store}) |
| 171 | |
| 172 | workerA.State().Set("process-only", "from-worker-a") |
| 173 | _, ok := workerB.State().Get("process-only") |
| 174 | require.False(t, ok) |
| 175 | |
| 176 | payload := Map{"worker": "a", "version": 3} |
| 177 | err := workerA.SharedState().SetJSON("cluster-key", payload, time.Minute) |
| 178 | require.NoError(t, err) |
| 179 | |
| 180 | err = workerA.SharedState().Set("raw-cluster-key", []byte("raw-value"), time.Minute) |
| 181 | require.NoError(t, err) |
| 182 | |
| 183 | var out map[string]any |
| 184 | rawJSON, found, err := workerB.SharedState().GetJSON("cluster-key", &out) |
| 185 | require.NoError(t, err) |
| 186 | require.True(t, found) |
| 187 | require.NotNil(t, rawJSON) |
| 188 | require.Equal(t, "a", out["worker"]) |
| 189 | require.EqualValues(t, 3, out["version"]) |
| 190 | |
| 191 | raw, found, err := workerB.SharedState().Get("raw-cluster-key") |
| 192 | require.NoError(t, err) |
| 193 | require.True(t, found) |
| 194 | require.Equal(t, []byte("raw-value"), raw) |
| 195 | |
| 196 | has, err := workerB.SharedState().Has("cluster-key") |
| 197 | require.NoError(t, err) |
| 198 | require.True(t, has) |
| 199 | |
| 200 | err = workerB.SharedState().Delete("cluster-key") |
| 201 | require.NoError(t, err) |
| 202 | |
| 203 | has, err = workerA.SharedState().Has("cluster-key") |
| 204 | require.NoError(t, err) |
| 205 | require.False(t, has) |
| 206 | |
| 207 | require.NoError(t, workerA.SharedState().Delete("raw-cluster-key")) |
| 208 | raw, found, err = workerB.SharedState().Get("raw-cluster-key") |
| 209 | require.NoError(t, err) |
| 210 | require.Nil(t, raw) |
| 211 | require.False(t, found) |
| 212 | } |
| 213 | |
| 214 | func TestSharedState_ExplicitSerializationError(t *testing.T) { |
| 215 | t.Parallel() |
nothing calls this directly
no test coverage detected