104 lines
3.2 KiB
Go
104 lines
3.2 KiB
Go
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
|
|
}
|