1 contributor
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
print "=== autoSMART Database Test ===\n\n";
my $dsn = "DBI:Pg:dbname=autosmart;host=192.168.2.102;port=5432";
my $dbh = DBI->connect($dsn, "autosmart", "autoSMART2025!", {
RaiseError => 1,
AutoCommit => 1,
PrintError => 0
}) or die "Failed to connect to database: $DBI::errstr\n";
print "✓ Database connection successful\n";
# Test tables exist
my @tables = qw(hdd_inventory hdd_migrations smart_readings predictions smart_thresholds alert_history system_config);
for my $table (@tables) {
my $sth = $dbh->prepare("SELECT COUNT(*) FROM $table");
$sth->execute();
my ($count) = $sth->fetchrow_array();
print "✓ Table $table: $count rows\n";
}
# Test views
my @views = qw(smart_readings_reconstructed latest_smart_readings drive_health_summary);
for my $view (@views) {
eval {
my $sth = $dbh->prepare("SELECT COUNT(*) FROM $view");
$sth->execute();
my ($count) = $sth->fetchrow_array();
print "✓ View $view: $count rows\n";
};
if ($@) {
print "✗ View $view: ERROR - $@\n";
}
}
# Test function
eval {
my $sth = $dbh->prepare("SELECT should_store_smart_reading(1, '{}', 'test', NOW())");
$sth->execute();
print "✓ Function should_store_smart_reading: Available\n";
};
if ($@) {
print "✗ Function should_store_smart_reading: ERROR - $@\n";
}
$dbh->disconnect();
print "\n=== Test Complete ===\n";