package org.skywalking.apm.collector.worker.storage; import org.junit.Assert; import org.junit.Test; import java.lang.reflect.Field; /** * @author pengys5 */ public class SegmentPersistenceDataTestCase { @Test public void getOrCreate() throws NoSuchFieldException, IllegalAccessException { SegmentPersistenceData segmentPersistenceData = new SegmentPersistenceData(); segmentPersistenceData.hold(); SegmentData segmentData = segmentPersistenceData.getOrCreate("Test1"); SegmentData segmentData_1 = segmentPersistenceData.getOrCreate("Test1"); Assert.assertEquals(segmentData, segmentData_1); SegmentData segmentData_2 = segmentPersistenceData.getOrCreate("Test2"); Assert.assertEquals(2, segmentPersistenceData.size()); System.out.println(segmentPersistenceData.asMap().toString()); Assert.assertEquals(segmentData, segmentPersistenceData.asMap().get("Test1")); Assert.assertEquals(segmentData_2, segmentPersistenceData.asMap().get("Test2")); Field testAField = segmentPersistenceData.getClass().getDeclaredField("lockedWindowData"); testAField.setAccessible(true); WindowData<SegmentData> windowData = (WindowData<SegmentData>) testAField.get(segmentPersistenceData); Assert.assertEquals(true, windowData.isHolding()); segmentPersistenceData.release(); Assert.assertEquals(false, windowData.isHolding()); } }