feat: added app to fill a pvc in 1GB increments #24
| @ -3,14 +3,12 @@ | ||||
| ini_set('display_errors', 1); | ||||
| error_reporting(E_ALL); | ||||
| 
 | ||||
| // Load dynamic secrets from environment
 | ||||
| $host = getenv('MYSQL_HOST') ?: ''; | ||||
| $user = getenv('MYSQL_USER') ?: 'root'; | ||||
| $pass = getenv('MYSQL_PASSWORD') ?: ''; | ||||
| $db   = 'testfill'; | ||||
| $charset = 'utf8mb4'; | ||||
| 
 | ||||
| // Connect to MariaDB
 | ||||
| $dsn = "mysql:host=$host;charset=$charset"; | ||||
| $options = [ | ||||
|     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, | ||||
| @ -31,22 +29,26 @@ try { | ||||
|     die("❌ DB connection failed: " . $e->getMessage()); | ||||
| } | ||||
| 
 | ||||
| // Get database size from information_schema
 | ||||
| try { | ||||
| function getDbStats($pdo, $db) { | ||||
|     $stmt = $pdo->query(" | ||||
|         SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb | ||||
|         SELECT  | ||||
|             ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb, | ||||
|             SUM(table_rows) AS total_rows | ||||
|  | ||||
|         FROM information_schema.tables | ||||
|         WHERE table_schema = 'testfill' | ||||
|         WHERE table_schema = '$db' | ||||
|     ");
 | ||||
|     $dbSize = $stmt->fetch()['total_size_gb'] ?? '0'; | ||||
| } catch (Exception $e) { | ||||
|     $dbSize = 'N/A'; | ||||
|     $result = $stmt->fetch(); | ||||
|     $sizeGb = $result['total_size_gb'] ?? '0'; | ||||
|     $rows = $result['total_rows'] ?? '0'; | ||||
|     $avgMb = ($rows > 0) ? round(($sizeGb * 1024) / $rows, 2) : 0; | ||||
|     return [$sizeGb, $rows, $avgMb]; | ||||
| } | ||||
| 
 | ||||
| list($dbSize, $rowCount, $avgRowMb) = getDbStats($pdo, $db); | ||||
| 
 | ||||
| $message = ''; | ||||
| 
 | ||||
| if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) { | ||||
|     // Insert ~1GB of binary data
 | ||||
|     $iterations = 1024; | ||||
|     $data = str_repeat(random_bytes(1024), 1024); // 1MB
 | ||||
|     $stmt = $pdo->prepare("INSERT INTO filler (data) VALUES (:data)"); | ||||
| @ -55,13 +57,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) { | ||||
|         $stmt->execute([':data' => $data]); | ||||
|     } | ||||
| 
 | ||||
|     // Recalculate DB size
 | ||||
|     $stmt = $pdo->query(" | ||||
|         SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb | ||||
|         FROM information_schema.tables | ||||
|         WHERE table_schema = 'testfill' | ||||
|     ");
 | ||||
|     $dbSize = $stmt->fetch()['total_size_gb'] ?? '0'; | ||||
|     list($dbSize, $rowCount, $avgRowMb) = getDbStats($pdo, $db); | ||||
| 
 | ||||
|     $message = "<p style='color: green;'>✅ 1GB inserted into MariaDB successfully.</p>"; | ||||
| } | ||||
| @ -76,7 +72,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) { | ||||
|     <h1>MariaDB Storage Filler</h1> | ||||
|     <?= $message ?>
 | ||||
|     <ul> | ||||
|         <li><strong>MariaDB Used Size:</strong> <?= $dbSize ?> GB</li>
 | ||||
|         <li><strong>📦 MariaDB Used Size:</strong> <?= $dbSize ?> GB</li>
 | ||||
|         <li><strong>📊 Total Rows:</strong> <?= $rowCount ?></li>
 | ||||
|         <li><strong>📐 Average Row Size:</strong> <?= $avgRowMb ?> MB</li>
 | ||||
|     </ul> | ||||
| 
 | ||||
|     <form method="post"> | ||||
|  | ||||
| @ -115,16 +115,9 @@ impl<T: Topology + K8sclient + HelmCommand> Interpret<T> for LAMPInterpret { | ||||
|             }, | ||||
|             { | ||||
|                 "name": "MYSQL_HOST", | ||||
|                 "value": "harmony-lamp-demo-database-mariadb" | ||||
|                 "value": secret_name | ||||
|             }, | ||||
|             { | ||||
|                 "name": "MYSQL_DATABASE", | ||||
|                 "value": "testfill" | ||||
|             }, | ||||
|             { | ||||
|                 "name": "MYSQL_USER", | ||||
|                 "value": "root" 
 | ||||
|             }]), | ||||
|             ]), | ||||
|         }; | ||||
| 
 | ||||
|         info!("Deploying score {deployment_score:#?}"); | ||||
| @ -272,7 +265,7 @@ opcache.fast_shutdown=1 | ||||
|         dockerfile.push(RUN::from( | ||||
|             "echo 'PassEnv MYSQL_PASSWORD' >> /etc/apache2/sites-available/000-default.conf \ | ||||
|              && echo 'PassEnv MYSQL_USER' >> /etc/apache2/sites-available/000-default.conf \ | ||||
|              && echo 'PassEnv MYSQL_HOST' >> /etc/apache2/sites-available/000-default.conf" | ||||
|              && echo 'PassEnv MYSQL_HOST' >> /etc/apache2/sites-available/000-default.conf",
 | ||||
|         )); | ||||
| 
 | ||||
|         // Create a dedicated user for running Apache
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	
Mariadb / mysql is not in the same container as the PHP process. You'll have to query mariadb stats or something else.