001: /* ====================================================================
002: * The Apache Software License, Version 1.1
003: *
004: * Copyright (c) 1997-2003 The Apache Software Foundation. All rights
005: * reserved.
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The end-user documentation included with the redistribution,
020: * if any, must include the following acknowledgment:
021: * "This product includes software developed by the
022: * Apache Software Foundation (http://www.apache.org/)."
023: * Alternately, this acknowledgment may appear in the software
024: * itself, if and wherever such third-party acknowledgments
025: * normally appear.
026: *
027: * 4. The names "Jakarta", "Avalon", and "Apache Software Foundation"
028: * must not be used to endorse or promote products derived from this
029: * software without prior written permission. For written
030: * permission, please contact apache@apache.org.
031: *
032: * 5. Products derived from this software may not be called "Apache",
033: * nor may "Apache" appear in their name, without prior written
034: * permission of the Apache Software Foundation.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
040: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: * ====================================================================
049: *
050: * This software consists of voluntary contributions made by many
051: * individuals on behalf of the Apache Software Foundation. For more
052: * information on the Apache Software Foundation, please see
053: * <http://www.apache.org/>.
054: */
055: package org.apache.log.output.test;
056:
057: import junit.framework.TestCase;
058: import org.apache.log.Hierarchy;
059: import org.apache.log.LogTarget;
060: import org.apache.log.Logger;
061: import org.apache.log.output.db.ColumnInfo;
062: import org.apache.log.output.db.ColumnType;
063: import org.apache.log.output.db.DefaultDataSource;
064: import org.apache.log.output.db.DefaultJDBCTarget;
065: import org.apache.log.output.db.NormalizedJDBCTarget;
066:
067: /**
068: * Test suite for the DB output target.
069: *
070: * @author <a href="mailto:peter@apache.org">Peter Donald</a>
071: */
072: public final class DBTargetTestCase extends TestCase {
073: public DBTargetTestCase(final String name) throws Exception {
074: super (name);
075:
076: Class.forName("org.postgresql.Driver");
077: }
078:
079: public void testBasicTarget() throws Exception {
080: final DefaultDataSource dataSource = new DefaultDataSource(
081: "jdbc:postgresql:avalon-logkit", "avalon", "");
082:
083: final ColumnInfo[] columns = {
084: new ColumnInfo("TIME", ColumnType.TIME, null),
085: new ColumnInfo("PRIORITY", ColumnType.PRIORITY, null),
086: new ColumnInfo("CATEGORY", ColumnType.CATEGORY, null),
087: new ColumnInfo("HOSTNAME", ColumnType.STATIC,
088: "helm.realityforge.net"),
089: new ColumnInfo("MESSAGE", ColumnType.MESSAGE, null) };
090:
091: final DefaultJDBCTarget target = new DefaultJDBCTarget(
092: dataSource, "log_entrys", columns);
093:
094: final Logger logger = getNewLogger(target);
095: logger.debug("Hello");
096: }
097:
098: public void testNumericConstants() throws Exception {
099: final DefaultDataSource dataSource = new DefaultDataSource(
100: "jdbc:postgresql:avalon-logkit", "avalon", "");
101:
102: final ColumnInfo[] columns = {
103: new ColumnInfo("TIME", ColumnType.TIME, null),
104: new ColumnInfo("PRIORITY", ColumnType.PRIORITY, null),
105: new ColumnInfo("CATEGORY", ColumnType.CATEGORY, null),
106: new ColumnInfo("HOSTNAME", ColumnType.STATIC,
107: "helm.realityforge.net"),
108: new ColumnInfo("MESSAGE", ColumnType.MESSAGE, null) };
109:
110: final NormalizedJDBCTarget target = new NormalizedJDBCTarget(
111: dataSource, "log_entrys2", columns);
112:
113: final Logger logger = getNewLogger(target);
114: logger.debug("Hello");
115: logger.info("Hello info");
116: logger.error("Hello error");
117: logger.fatalError("Hello fatalError");
118: }
119:
120: private Logger getNewLogger(final LogTarget target) {
121: final Hierarchy hierarchy = new Hierarchy();
122: final Logger logger = hierarchy.getLoggerFor("myCategory");
123: logger.setLogTargets(new LogTarget[] { target });
124: return logger;
125: }
126: }
|