mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 18:48:08 +00:00 
			
		
		
		
	 801eddf5f8
			
		
	
	801eddf5f8
	
	
	
		
			
			* Slight cleanup around mysql ha lock implementation * Removes some duplication around lock table naming * Escapes lock table name with backticks to handle weird characters * Lock table defaults to regular table name + "_lock" * Drop lock table after tests run * Add `ha_enabled` option for mysql storage It defaults to false, and we gate a few things like creating the lock table and preparing lock related statements on it
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package mysql
 | |
| 
 | |
| import (
 | |
| 	"os"
 | |
| 	"testing"
 | |
| 
 | |
| 	log "github.com/hashicorp/go-hclog"
 | |
| 	"github.com/hashicorp/vault/helper/logging"
 | |
| 	"github.com/hashicorp/vault/physical"
 | |
| 
 | |
| 	_ "github.com/go-sql-driver/mysql"
 | |
| )
 | |
| 
 | |
| func TestMySQLBackend(t *testing.T) {
 | |
| 	address := os.Getenv("MYSQL_ADDR")
 | |
| 	if address == "" {
 | |
| 		t.SkipNow()
 | |
| 	}
 | |
| 
 | |
| 	database := os.Getenv("MYSQL_DB")
 | |
| 	if database == "" {
 | |
| 		database = "test"
 | |
| 	}
 | |
| 
 | |
| 	table := os.Getenv("MYSQL_TABLE")
 | |
| 	if table == "" {
 | |
| 		table = "test"
 | |
| 	}
 | |
| 
 | |
| 	username := os.Getenv("MYSQL_USERNAME")
 | |
| 	password := os.Getenv("MYSQL_PASSWORD")
 | |
| 
 | |
| 	// Run vault tests
 | |
| 	logger := logging.NewVaultLogger(log.Debug)
 | |
| 
 | |
| 	b, err := NewMySQLBackend(map[string]string{
 | |
| 		"address":  address,
 | |
| 		"database": database,
 | |
| 		"table":    table,
 | |
| 		"username": username,
 | |
| 		"password": password,
 | |
| 	}, logger)
 | |
| 
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Failed to create new backend: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	defer func() {
 | |
| 		mysql := b.(*MySQLBackend)
 | |
| 		_, err := mysql.client.Exec("DROP TABLE IF EXISTS " + mysql.dbTable + " ," + mysql.dbLockTable)
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Failed to drop table: %v", err)
 | |
| 		}
 | |
| 	}()
 | |
| 
 | |
| 	physical.ExerciseBackend(t, b)
 | |
| 	physical.ExerciseBackend_ListPrefix(t, b)
 | |
| }
 | |
| 
 | |
| func TestMySQLHABackend(t *testing.T) {
 | |
| 	address := os.Getenv("MYSQL_ADDR")
 | |
| 	if address == "" {
 | |
| 		t.SkipNow()
 | |
| 	}
 | |
| 
 | |
| 	database := os.Getenv("MYSQL_DB")
 | |
| 	if database == "" {
 | |
| 		database = "test"
 | |
| 	}
 | |
| 
 | |
| 	table := os.Getenv("MYSQL_TABLE")
 | |
| 	if table == "" {
 | |
| 		table = "test"
 | |
| 	}
 | |
| 
 | |
| 	username := os.Getenv("MYSQL_USERNAME")
 | |
| 	password := os.Getenv("MYSQL_PASSWORD")
 | |
| 
 | |
| 	// Run vault tests
 | |
| 	logger := logging.NewVaultLogger(log.Debug)
 | |
| 
 | |
| 	b, err := NewMySQLBackend(map[string]string{
 | |
| 		"address":    address,
 | |
| 		"database":   database,
 | |
| 		"table":      table,
 | |
| 		"username":   username,
 | |
| 		"password":   password,
 | |
| 		"ha_enabled": "true",
 | |
| 	}, logger)
 | |
| 
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("Failed to create new backend: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	defer func() {
 | |
| 		mysql := b.(*MySQLBackend)
 | |
| 		_, err := mysql.client.Exec("DROP TABLE IF EXISTS " + mysql.dbTable + " ," + mysql.dbLockTable)
 | |
| 		if err != nil {
 | |
| 			t.Fatalf("Failed to drop table: %v", err)
 | |
| 		}
 | |
| 	}()
 | |
| 
 | |
| 	ha, ok := b.(physical.HABackend)
 | |
| 	if !ok {
 | |
| 		t.Fatalf("zookeeper does not implement HABackend")
 | |
| 	}
 | |
| 	physical.ExerciseHABackend(t, ha, ha)
 | |
| }
 |