All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.testng.TimeBombSkipException Maven / Gradle / Ivy

There is a newer version: 7.10.1
Show newest version
package org.testng;

import java.io.PrintStream;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * A {@link SkipException} extension that transforms a skipped method into a failed method based on
 * a time trigger.
 *
 * 

By default the time format is yyyy/MM/dd (according to {@code SimpleDateFormat}). You can * customize this by using the specialized constructors. Suppported date formats are according to * the {@code SimpleDateFormat}. * * @since 5.6 */ public class TimeBombSkipException extends SkipException { private static final long serialVersionUID = -8599821478834048537L; private static final String FORMAT = "yyyy/MM/dd"; private final SimpleDateFormat sdf = new SimpleDateFormat(FORMAT); private Calendar m_expireDate; private DateFormat m_inFormat = sdf; private DateFormat m_outFormat = sdf; /** * Creates a {@code TimeBombedSkipException} using the expirationDate. The format used * for date comparison is yyyy/MM/dd * * @param msg exception message * @param expirationDate time limit after which the SKIP becomes a FAILURE */ public TimeBombSkipException(String msg, Date expirationDate) { this(msg, expirationDate, FORMAT); } /** * Creates a {@code TimeBombedSkipException} using the expirationDate. The * format parameter wiil be used for performing the time comparison. * * @param msg exception message * @param expirationDate time limit after which the SKIP becomes a FAILURE * @param format format for the time comparison */ public TimeBombSkipException(String msg, Date expirationDate, String format) { super(msg); m_inFormat = new SimpleDateFormat(format); m_outFormat = new SimpleDateFormat(format); initExpireDate(expirationDate); } /** * Creates a {@code TimeBombedSkipException} using the date in the format * yyyy/MM/dd. * * @param msg exception message * @param date time limit after which the SKIP becomes a FAILURE */ public TimeBombSkipException(String msg, String date) { super(msg); initExpireDate(date); } /** * Creates a {@code TimeBombedSkipException} using the date in the specified format * format. The same format is used when performing the time comparison. * * @param msg exception message * @param date time limit after which the SKIP becomes a FAILURE * @param format format of the passed in date and of the time comparison */ public TimeBombSkipException(String msg, String date, String format) { this(msg, date, format, format); } /** * Creates a {@code TimeBombedSkipException} using the date in the specified format * inFormat. The outFormat will be used to perform the time comparison and * display. * * @param msg exception message * @param date time limit after which the SKIP becomes a FAILURE * @param inFormat format of the passed in date * @param outFormat format of the time comparison */ public TimeBombSkipException(String msg, String date, String inFormat, String outFormat) { super(msg); m_inFormat = new SimpleDateFormat(inFormat); m_outFormat = new SimpleDateFormat(outFormat); initExpireDate(date); } /** * Creates a {@code TimeBombedSkipException} using the expirationDate. The format used * for date comparison is yyyy/MM/dd * * @param msg exception message * @param expirationDate time limit after which the SKIP becomes a FAILURE * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method). * (A null value is permitted, and indicates that the cause is nonexistent or * unknown.) */ public TimeBombSkipException(String msg, Date expirationDate, Throwable cause) { super(msg, cause); initExpireDate(expirationDate); } /** * Creates a {@code TimeBombedSkipException} using the expirationDate. The * format parameter wiil be used for performing the time comparison. * * @param msg exception message * @param expirationDate time limit after which the SKIP becomes a FAILURE * @param format format for the time comparison * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method). * (A null value is permitted, and indicates that the cause is nonexistent or * unknown.) */ public TimeBombSkipException(String msg, Date expirationDate, String format, Throwable cause) { super(msg, cause); m_inFormat = new SimpleDateFormat(format); m_outFormat = new SimpleDateFormat(format); initExpireDate(expirationDate); } /** * Creates a {@code TimeBombedSkipException} using the date in the format * yyyy/MM/dd. * * @param msg exception message * @param date time limit after which the SKIP becomes a FAILURE * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method). * (A null value is permitted, and indicates that the cause is nonexistent or * unknown.) */ public TimeBombSkipException(String msg, String date, Throwable cause) { super(msg, cause); initExpireDate(date); } /** * Creates a {@code TimeBombedSkipException} using the date in the specified format * format. The same format is used when performing the time comparison. * * @param msg exception message * @param date time limit after which the SKIP becomes a FAILURE * @param format format of the passed in date and of the time comparison * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method). * (A null value is permitted, and indicates that the cause is nonexistent or * unknown.) */ public TimeBombSkipException(String msg, String date, String format, Throwable cause) { this(msg, date, format, format, cause); } /** * Creates a {@code TimeBombedSkipException} using the date in the specified format * inFormat. The outFormat will be used to perform the time comparison and * display. * * @param msg exception message * @param date time limit after which the SKIP becomes a FAILURE * @param inFormat format of the passed in date * @param outFormat format of the time comparison * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} method). * (A null value is permitted, and indicates that the cause is nonexistent or * unknown.) */ public TimeBombSkipException( String msg, String date, String inFormat, String outFormat, Throwable cause) { super(msg, cause); m_inFormat = new SimpleDateFormat(inFormat); m_outFormat = new SimpleDateFormat(outFormat); initExpireDate(date); } private void initExpireDate(Date expireDate) { m_expireDate = Calendar.getInstance(); m_expireDate.setTime(expireDate); } private void initExpireDate(String date) { try { Date d = m_inFormat.parse(date); initExpireDate(d); } catch (ParseException pex) { throw new TestNGException("Cannot parse date:" + date + " using pattern: " + m_inFormat, pex); } } @Override public boolean isSkip() { if (null == m_expireDate) { return false; } try { Calendar now = Calendar.getInstance(); Date nowDate = m_inFormat.parse(m_inFormat.format(now.getTime())); now.setTime(nowDate); return !now.after(m_expireDate); } catch (ParseException pex) { throw new TestNGException("Cannot compare dates."); } } @Override public String getMessage() { if (isSkip()) { return super.getMessage(); } else { return super.getMessage() + "; Test must have been enabled by: " + m_outFormat.format(m_expireDate.getTime()); } } @Override public void printStackTrace(PrintStream s) { reduceStackTrace(); super.printStackTrace(s); } @Override public void printStackTrace(PrintWriter s) { reduceStackTrace(); super.printStackTrace(s); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy