/* * JBoss, Home of Professional Open Source * Copyright 2011, Red Hat, Inc. and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.mobicents.protocols.ss7.cap.functional; import java.io.Serializable; /** * @author baranowb * */ public class TestEvent implements Serializable { private EventType eventType; private boolean sent; private long timestamp; private Object event; private int sequence; public static TestEvent createReceivedEvent(EventType eventType, Object eventSource, int sequence) { TestEvent te = new TestEvent(eventType, false, System.currentTimeMillis(), eventSource, sequence); return te; } public static TestEvent createSentEvent(EventType eventType, Object eventSource, int sequence) { TestEvent te = new TestEvent(eventType, true, System.currentTimeMillis(), eventSource, sequence); return te; } public static TestEvent createReceivedEvent(EventType eventType, Object eventSource, int sequence, long stamp) { TestEvent te = new TestEvent(eventType, false, stamp, eventSource, sequence); return te; } public static TestEvent createSentEvent(EventType eventType, Object eventSource, int sequence, long stamp) { TestEvent te = new TestEvent(eventType, true, stamp, eventSource, sequence); return te; } /** * @param eventType * @param sent * @param timestamp * @param event */ public TestEvent(EventType eventType, boolean sent, long timestamp, Object event, int sequence) { super(); this.eventType = eventType; this.sent = sent; this.timestamp = timestamp; this.event = event; this.sequence = sequence; } public EventType getEventType() { return eventType; } public boolean isSent() { return sent; } public long getTimestamp() { return timestamp; } public Object getEvent() { return event; } public int getSequence() { return sequence; } @Override public int hashCode() { final int prime = 31; int result = 1; // result = prime * result + ((eventSource == null) ? 0 : eventSource.hashCode()); result = prime * result + ((eventType == null) ? 0 : eventType.hashCode()); result = prime * result + (sent ? 1231 : 1237); result = prime * result + sequence; // dont use this ? // result = prime * result + (int) (timestamp ^ (timestamp >>> 32)); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; TestEvent other = (TestEvent) obj; // if (eventSource == null) { // if (other.eventSource != null) // return false; // } else if (!eventSource.equals(other.eventSource)) // return false; if (eventType != other.eventType) return false; if (sent != other.sent) return false; if (sequence != other.sequence) return false; if (timestamp != other.timestamp) { long v = timestamp - other.timestamp; v = Math.abs(v); // 600ms, this can happen if we run tests concurrently and its not a big deal :) if (v > 600) { return false; } } // now compare source! return true; } @Override public String toString() { return "TestEvent [eventType=" + eventType + ", sent=" + sent + ", timestamp=" + timestamp + ", eventSource=" + event + ", sequence=" + sequence + "]"; } }