2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2024 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.drools.core.lock;
24 import static org.junit.jupiter.api.Assertions.assertEquals;
25 import static org.junit.jupiter.api.Assertions.assertNull;
26 import static org.junit.jupiter.api.Assertions.assertSame;
28 import java.io.ByteArrayInputStream;
29 import java.io.ByteArrayOutputStream;
30 import java.io.ObjectInputStream;
31 import java.io.ObjectOutputStream;
32 import org.junit.jupiter.api.Test;
34 public abstract class AlwaysLockBaseTest<T extends LockImpl> {
35 protected static final String RESOURCE = "hello";
36 protected static final String OWNER_KEY = "world";
37 protected static final int HOLD_SEC = 10;
38 protected static final int HOLD_SEC2 = 10;
40 protected LockCallback callback;
44 @SuppressWarnings("unchecked")
45 public void testSerializable() throws Exception {
46 ByteArrayOutputStream baos = new ByteArrayOutputStream();
47 try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
48 oos.writeObject(lock);
51 ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
53 try (ObjectInputStream ois = new ObjectInputStream(bais)) {
54 lock2 = (T) ois.readObject();
57 assertEquals(lock.getState(), lock2.getState());
58 assertEquals(lock.getResourceId(), lock2.getResourceId());
59 assertEquals(lock.getOwnerKey(), lock2.getOwnerKey());
60 assertEquals(lock.getHoldSec(), lock2.getHoldSec());
62 // these fields are transient
63 assertNull(lock2.getCallback());
67 public void testAlwaysLockData() {
68 assertEquals(RESOURCE, lock.getResourceId());
69 assertEquals(OWNER_KEY, lock.getOwnerKey());
70 assertEquals(HOLD_SEC, lock.getHoldSec());
71 assertSame(callback, lock.getCallback());