| 12345678910111213141516171819202122232425262728293031323334353637 |
- //go:build protectionintegration
- package repository
- import (
- "context"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/stretchr/testify/require"
- "testing"
- )
- func TestAccountProtectionEditableConcurrencySingleBulkAndTransitions(t *testing.T) {
- client, db := protectionTestDatabase(t)
- repo := newAccountRepositoryWithSQL(client, db, nil)
- ctx := context.Background()
- account := &service.Account{Name: "editable-concurrency", Platform: service.PlatformOpenAI, Type: service.AccountTypeOAuth, Concurrency: 64, Status: service.StatusActive}
- require.NoError(t, repo.Create(ctx, account))
- protection := service.NewAntiDegradeService(protectionIntegrationStore{repo})
- for _, mode := range service.RegisteredProtectionModes() {
- current, err := protection.ApplyAntiDegradeMode(ctx, account.ID, service.AntiDegradeMode(mode))
- require.NoError(t, err)
- require.GreaterOrEqual(t, current.Mode1EffectiveConcurrency(), 64)
- wanted := 128
- _, err = repo.BulkUpdate(ctx, []int64{account.ID}, service.AccountBulkUpdate{Concurrency: &wanted})
- require.NoError(t, err)
- current, err = repo.GetByID(ctx, account.ID)
- require.NoError(t, err)
- require.Equal(t, wanted, current.Mode1EffectiveConcurrency())
- marker := current.Extra[service.AntiDegradeMarkerExtraKey].(map[string]any)
- require.EqualValues(t, wanted, marker["max_concurrency"])
- current.Concurrency = 256
- require.NoError(t, repo.Update(ctx, current))
- restored, err := protection.RevertAntiDegrade(ctx, account.ID)
- require.NoError(t, err)
- require.Equal(t, 256, restored.Concurrency)
- }
- }
|