view tests/Test_Cforkbomb.java @ 931:df18aa5c8a61

Add test for MonetDriver.getPropertyInfo(url, props). The implementation is moved to Parameter.java which contains the list of connection parameters. It currently only returns the mandatory connection parameters.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 24 Oct 2024 19:10:06 +0200 (6 months ago)
parents e890195256ac
children d416e9b6b3d0
line wrap: on
line source
/*
 * SPDX-License-Identifier: MPL-2.0
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0.  If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Copyright 2024 MonetDB Foundation;
 * Copyright August 2008 - 2023 MonetDB B.V.;
 * Copyright 1997 - July 2008 CWI.
 */

import java.sql.*;
import java.util.*;

public class Test_Cforkbomb {
	private static String args[];

	static class Worker extends Thread {
		private int id;

		public Worker(int id) {
			this.id = id;
		}

		public void run() {
			try {
				System.out.print("Establishing Connection " + id + "...");
				Connection con = DriverManager.getConnection(args[0]);
				System.out.println(" done...");

				// do something with the connection to test if it works
				Statement stmt = con.createStatement();
				ResultSet rs = stmt.executeQuery("SELECT " + id);
				if (!rs.next()) {
					System.out.println("thread " + id + " got no response from server :(");
				} else {
					if (rs.getInt(1) == id) {
						System.out.println("thread " + id + ": connection ok");
					} else {
						System.out.println("thread " + id + ": got garbage: " + rs.getString(1));
					}
				}

				con.close();
			} catch (SQLException e) {
				System.out.println("thread " + id + " unhappy: " + e.toString());
			}
		}
	}

	public static void main(String[] args) throws Exception {
		Test_Cforkbomb.args = args;

		// just DoS the server full throttle :)
		int i;
		for (i = 0; i < 200; i++) {
			Worker w = new Worker(i);
			w.start();
		}
	}
}