...
This commit is contained in:
103
pkg/system/builders/postgresql/verification/verification.go
Normal file
103
pkg/system/builders/postgresql/verification/verification.go
Normal file
@@ -0,0 +1,103 @@
|
||||
package verification
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
// Verifier handles the verification of PostgreSQL installation
|
||||
type Verifier struct {
|
||||
InstallPrefix string
|
||||
}
|
||||
|
||||
// NewVerifier creates a new verifier
|
||||
func NewVerifier(installPrefix string) *Verifier {
|
||||
return &Verifier{
|
||||
InstallPrefix: installPrefix,
|
||||
}
|
||||
}
|
||||
|
||||
// VerifyPostgres verifies the PostgreSQL installation
|
||||
func (v *Verifier) VerifyPostgres() (bool, error) {
|
||||
fmt.Println("Verifying PostgreSQL installation...")
|
||||
|
||||
// Check for PostgreSQL binary
|
||||
postgresPath := fmt.Sprintf("%s/bin/postgres", v.InstallPrefix)
|
||||
fmt.Printf("Checking for PostgreSQL binary at %s\n", postgresPath)
|
||||
|
||||
checkCmd := exec.Command("ls", "-la", postgresPath)
|
||||
output, err := checkCmd.CombinedOutput()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("❌ WARNING: PostgreSQL binary not found at expected location: %s\n", postgresPath)
|
||||
fmt.Println("This may indicate that the build process failed or installed to a different location.")
|
||||
|
||||
// Search for PostgreSQL binary in other locations
|
||||
fmt.Println("Searching for PostgreSQL binary in other locations...")
|
||||
findCmd := exec.Command("find", "/", "-name", "postgres", "-type", "f")
|
||||
findOutput, _ := findCmd.CombinedOutput()
|
||||
fmt.Printf("Search results:\n%s\n", string(findOutput))
|
||||
|
||||
return false, fmt.Errorf("PostgreSQL binary not found at expected location")
|
||||
}
|
||||
|
||||
fmt.Printf("✅ PostgreSQL binary found at expected location:\n%s\n", string(output))
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// VerifyGoSP verifies the Go stored procedure installation
|
||||
func (v *Verifier) VerifyGoSP() (bool, error) {
|
||||
fmt.Println("Verifying Go stored procedure installation...")
|
||||
|
||||
// Check for Go stored procedure
|
||||
gospPath := fmt.Sprintf("%s/lib/libgosp.so", v.InstallPrefix)
|
||||
fmt.Printf("Checking for Go stored procedure at %s\n", gospPath)
|
||||
|
||||
checkCmd := exec.Command("ls", "-la", gospPath)
|
||||
output, err := checkCmd.CombinedOutput()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("❌ WARNING: Go stored procedure library not found at expected location: %s\n", gospPath)
|
||||
|
||||
// Search for Go stored procedure in other locations
|
||||
fmt.Println("Searching for Go stored procedure in other locations...")
|
||||
findCmd := exec.Command("find", "/", "-name", "libgosp.so", "-type", "f")
|
||||
findOutput, _ := findCmd.CombinedOutput()
|
||||
fmt.Printf("Search results:\n%s\n", string(findOutput))
|
||||
|
||||
return false, fmt.Errorf("Go stored procedure library not found at expected location")
|
||||
}
|
||||
|
||||
fmt.Printf("✅ Go stored procedure library found at expected location:\n%s\n", string(output))
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// Verify verifies the entire PostgreSQL installation
|
||||
func (v *Verifier) Verify() (bool, error) {
|
||||
fmt.Println("=== Verifying PostgreSQL Installation ===")
|
||||
|
||||
// Verify PostgreSQL
|
||||
postgresOk, postgresErr := v.VerifyPostgres()
|
||||
|
||||
// Verify Go stored procedure
|
||||
gospOk, gospErr := v.VerifyGoSP()
|
||||
|
||||
// Overall verification result
|
||||
success := postgresOk && gospOk
|
||||
|
||||
if success {
|
||||
fmt.Println("✅ All components verified successfully!")
|
||||
} else {
|
||||
fmt.Println("⚠️ Some components could not be verified.")
|
||||
|
||||
if postgresErr != nil {
|
||||
fmt.Printf("PostgreSQL verification error: %v\n", postgresErr)
|
||||
}
|
||||
|
||||
if gospErr != nil {
|
||||
fmt.Printf("Go stored procedure verification error: %v\n", gospErr)
|
||||
}
|
||||
}
|
||||
|
||||
return success, nil
|
||||
}
|
Reference in New Issue
Block a user