fleet/tools/mysql-replica-testing/docker-compose.yml
Lucas Manuel Rodriguez 57816592ba
Add read replica testing helpers and fix non-sso login bug (#4908)
not set on the INSERT.
- OUT: Only sets the ID on the passed session and returns it. (`CreatedAt`, `AccessedAt`, are not set.)

New version:

```go
func (ds *Datastore) NewSession(ctx context.Context, userID uint, sessionKey string) (*fleet.Session, error) {
	sqlStatement := `
		INSERT INTO sessions (
			user_id,
			` + "`key`" + `
		)
		VALUES(?,?)
	`
	result, err := ds.writer.ExecContext(ctx, sqlStatement, userID, sessionKey)
	if err != nil {
		return nil, ctxerr.Wrap(ctx, err, "inserting session")
	}

	id, _ := result.LastInsertId() // cannot fail with the mysql driver
	return ds.sessionByID(ctx, ds.writer, uint(id))
}
```

- IN: Define arguments that are truly used when creating a session.
- OUT: Load and return the fleet.Session struct with all values set (using the `ds.writer` to support read replicas correctly).

PS: The new `NewSession` version mimics what we already do with other entities, like policies (`Datastore.NewGlobalPolicy`).
2022-04-04 16:52:05 -07:00

52 lines
1.5 KiB
YAML

---
version: "2"
services:
mysql_main:
image: ${FLEET_MYSQL_IMAGE:-mysql:5.7}
platform: linux/x86_64
volumes:
- mysql-persistent-volume-replica-main:/tmp
command: [
"mysqld",
"--datadir=/tmp/mysqldata-replica-main",
"--event-scheduler=ON",
# These 3 keys run MySQL with GTID consistency enforced to avoid issues with production deployments that use it.
"--enforce-gtid-consistency=ON",
"--log-bin=bin.log",
"--server-id=1",
]
environment: &mysql-default-environment
MYSQL_ROOT_PASSWORD: toor
MYSQL_DATABASE: fleet
MYSQL_USER: fleet
MYSQL_PASSWORD: insecure
ports:
- "3308:3306"
mysql_read_replica:
image: ${FLEET_MYSQL_IMAGE:-mysql:5.7}
platform: linux/x86_64
volumes:
- mysql-persistent-volume-replica-read:/tmp
# innodb-file-per-table=OFF gives ~20% speedup for test runs.
command: [
"mysqld",
"--datadir=/tmp/mysqldata-replica-read",
"--slow_query_log=1",
"--log_output=TABLE",
"--log-queries-not-using-indexes",
"--event-scheduler=ON",
"--innodb-file-per-table=OFF",
# These 3 keys run MySQL with GTID consistency enforced to avoid issues with production deployments that use it.
"--enforce-gtid-consistency=ON",
"--log-bin=bin.log",
"--server-id=2",
]
environment: *mysql-default-environment
ports:
- "3309:3306"
volumes:
mysql-persistent-volume-replica-main:
mysql-persistent-volume-replica-read: