feat: sync deployed v1.0.0-rc.38-custom.42
Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
This commit is contained in:
1 parent
aa6c3f50f4
commit
ceddfd3d6b
828 files changed
+122253
-13702
No files matched your search
@@ -0,0 +1,51 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/QuantumNous/new-api/common"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// Opt-in only: the deployment harness restores a snapshot into an isolated
|
||||
// disposable database. No workers, relay calls or background jobs are started.
|
||||
func TestAdaptiveDeploymentUpgradeFromSnapshot(t *testing.T) {
|
||||
dsn := os.Getenv("ADAPTIVE_UPGRADE_DSN")
|
||||
if dsn == "" {
|
||||
t.Skip("isolated upgrade snapshot unset")
|
||||
}
|
||||
require.True(t, strings.HasSuffix(dsn, "/adaptive_upgrade34?sslmode=disable"))
|
||||
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
||||
require.NoError(t, err)
|
||||
var before, after struct {
|
||||
Users int64
|
||||
Quota int64
|
||||
Used int64
|
||||
Channels int64
|
||||
Runs int64
|
||||
}
|
||||
query := "SELECT (SELECT count(*) FROM users) AS users, (SELECT sum(quota) FROM users) AS quota, (SELECT sum(used_quota) FROM users) AS used, (SELECT count(*) FROM channels) AS channels, (SELECT count(*) FROM detection_runs) AS runs"
|
||||
require.NoError(t, db.Raw(query).Scan(&before).Error)
|
||||
conn, err := db.DB()
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, conn.Close())
|
||||
oldDB, oldMaster, oldMain, oldLog := DB, common.IsMasterNode, common.MainDatabaseType(), common.LogDatabaseType()
|
||||
t.Cleanup(func() { DB = oldDB; common.IsMasterNode = oldMaster; common.SetDatabaseTypes(oldMain, oldLog) })
|
||||
common.IsMasterNode = true
|
||||
t.Setenv("SQL_DSN", dsn)
|
||||
for range 2 {
|
||||
require.NoError(t, InitDB())
|
||||
require.True(t, DB.Migrator().HasTable(&DetectionSchedule{}))
|
||||
require.NoError(t, DB.Raw(query).Scan(&after).Error)
|
||||
assert.Equal(t, before, after)
|
||||
conn, err = DB.DB()
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, conn.Close())
|
||||
}
|
||||
t.Logf("snapshot preserved: users=%d channels=%d runs=%d; wallet totals unchanged", before.Users, before.Channels, before.Runs)
|
||||
}
|
||||
Reference in new issue
Block a user