2 * Copyright (c) 2017 Inocybe Technologies and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.cluster.io;
10 import static org.junit.Assert.assertNotNull;
11 import static org.junit.Assert.assertNull;
12 import static org.mockito.Mockito.never;
13 import static org.mockito.Mockito.verify;
15 import java.io.IOException;
16 import java.util.function.Consumer;
17 import org.junit.After;
18 import org.junit.AfterClass;
19 import org.junit.Before;
20 import org.junit.BeforeClass;
21 import org.junit.Test;
22 import org.mockito.Mockito;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
27 * Unit tests for SharedFileBackedOutputStream.
29 * @author Thomas Pantelis
31 public class SharedFileBackedOutputStreamTest {
32 private static final Logger LOG = LoggerFactory.getLogger(SharedFileBackedOutputStreamTest.class);
33 private static final String TEMP_DIR = "target/FileBackedOutputStreamTest";
36 public static void staticSetup() {
37 FileBackedOutputStreamTest.createDir(TEMP_DIR);
41 public static void staticCleanup() {
42 FileBackedOutputStreamTest.deleteTempFiles(TEMP_DIR);
43 FileBackedOutputStreamTest.deleteFile(TEMP_DIR);
48 FileBackedOutputStreamTest.deleteTempFiles(TEMP_DIR);
49 FileBackedOutputStream.REFERENCE_CACHE.clear();
53 public void cleanup() {
54 FileBackedOutputStreamTest.deleteTempFiles(TEMP_DIR);
58 public void testSingleUsage() throws IOException {
59 LOG.info("testSingleUsage starting");
60 try (SharedFileBackedOutputStream fbos = new SharedFileBackedOutputStream(5, TEMP_DIR)) {
61 byte[] bytes = new byte[]{0, 1, 2, 3, 4, 5, 6};
64 assertNotNull("Expected temp file created", FileBackedOutputStreamTest.findTempFileName(TEMP_DIR));
66 assertNull("Found unexpected temp file", FileBackedOutputStreamTest.findTempFileName(TEMP_DIR));
69 LOG.info("testSingleUsage ending");
72 @SuppressWarnings("unchecked")
74 public void testSharing() throws IOException {
75 LOG.info("testSharing starting");
76 try (SharedFileBackedOutputStream fbos = new SharedFileBackedOutputStream(5, TEMP_DIR)) {
77 String context = "context";
78 Consumer<String> mockCallback = Mockito.mock(Consumer.class);
79 fbos.setOnCleanupCallback(mockCallback , context);
81 byte[] bytes = new byte[]{0, 1, 2, 3, 4, 5, 6};
84 assertNotNull("Expected temp file created", FileBackedOutputStreamTest.findTempFileName(TEMP_DIR));
86 fbos.incrementUsageCount();
88 assertNotNull("Expected temp file exists", FileBackedOutputStreamTest.findTempFileName(TEMP_DIR));
90 fbos.incrementUsageCount();
91 fbos.incrementUsageCount();
94 assertNotNull("Expected temp file exists", FileBackedOutputStreamTest.findTempFileName(TEMP_DIR));
97 assertNotNull("Expected temp file exists", FileBackedOutputStreamTest.findTempFileName(TEMP_DIR));
99 verify(mockCallback, never()).accept(context);
102 assertNull("Found unexpected temp file", FileBackedOutputStreamTest.findTempFileName(TEMP_DIR));
104 verify(mockCallback).accept(context);
107 LOG.info("testSharing ending");