Wie würden Sie testen, ein Connection Pool

Habe ich implementiert eine sehr einfache ConnectionPool in Java.
Es hat keine ausgefallenen Funktionen, nur get/release-Methoden für die Verbindung.

Wie kann ich es testen?

Ich weiß, es gibt viele Verbindungs-Pools bereit zu verwenden, die sind viel zuverlässiger als das, was ich mache, aber ich versuche nur, zu üben, zu verstehen, wie verbindungen Pool.

Danke!

Hier ist der code falls es hilft:

public class ConnectionPoolImpl implements ConnectionPool {
    private Vector<PooledConnection> connections; //The connections container
    String url;
    String username; 
    String password;

    /**
     * Instanciates a new MySQLConnectionPool
     * @param nbConnectionsMax
     */
    public ConnectionPoolImpl(String DBUrl, String username, String password){
        this.connections = new Vector<PooledConnection>();
        this.url = DBUrl;
        this.username = username;
        this.password = password;
    }

    /**
     * Returns a connection from the pool, if some are available, or create a new one.
     * 
     * @return the connection.
     */
    public Connection getConnection() throws SQLException {
        synchronized(this.connections){
            //Checking if there is an available connection to return
            for(PooledConnection c : this.connections){
                if(!c.isUsed()){
                    c.setUsed();
                    return c.getConnection();
                }
            }

            //If there are none, open a new one and return it
            Connection conn = DriverManager.getConnection(url, username, password);
        PooledConnection pConn = new PooledConnection(conn);
        pConn.setUsed();
        connections.add(pConn);
        return pConn.getConnection();
        }
    }

    /**
     * Releases a connection to the pool.
     * 
     * @param con the connection to release.
     */
    public void releaseConnection(Connection con) throws SQLException {
        synchronized(this.connections){
            for(PooledConnection c : this.connections){
                if(c.getConnection().equals(con)){
                    c.setFree();
                    return;
                }
            }
        }
      }
}

Und meine PooledConnection.java:

public class PooledConnection {
    private Connection conn;
    private boolean used;

    public PooledConnection(Connection conn){
        this.conn = conn;
        this.used = false;
    }

    public void setUsed(){
        this.used = true;
    }

    public void setFree(){
        this.used = false;
    }

    public boolean isUsed(){
        return this.used;
    }

    public Connection getConnection(){
        return this.conn;
    }
}
fyi, Sie haben einen Fehler. wenn Sie erstellen und eine neue Verbindung, die Sie nicht markieren, wie verwendet.
Hoppla, du hast Recht. Ich korrigiert diesen in der Bearbeiten. Danke.

InformationsquelleAutor nbarraille | 2011-02-27

Schreibe einen Kommentar