/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ package org.opensearch.forecast.model; import java.io.IOException; import java.util.Collection; import org.opensearch.common.io.stream.BytesStreamOutput; import org.opensearch.core.common.io.stream.NamedWriteableAwareStreamInput; import org.opensearch.core.common.io.stream.NamedWriteableRegistry; import org.opensearch.plugins.Plugin; import org.opensearch.test.InternalSettingsPlugin; import org.opensearch.test.OpenSearchSingleNodeTestCase; import org.opensearch.timeseries.TestHelpers; import org.opensearch.timeseries.TimeSeriesAnalyticsPlugin; public class ForecastSerializationTests extends OpenSearchSingleNodeTestCase { @Override protected Collection<Class<? extends Plugin>> getPlugins() { return pluginList(InternalSettingsPlugin.class, TimeSeriesAnalyticsPlugin.class); } @Override protected NamedWriteableRegistry writableRegistry() { return getInstanceFromNode(NamedWriteableRegistry.class); } public void testStreamConstructor() throws IOException { Forecaster forecaster = TestHelpers.randomForecaster(); BytesStreamOutput output = new BytesStreamOutput(); forecaster.writeTo(output); NamedWriteableAwareStreamInput streamInput = new NamedWriteableAwareStreamInput(output.bytes().streamInput(), writableRegistry()); Forecaster parsedForecaster = new Forecaster(streamInput); assertTrue(parsedForecaster.equals(forecaster)); } public void testStreamConstructorNullUser() throws IOException { Forecaster forecaster = TestHelpers.ForecasterBuilder.newInstance().setUser(null).build(); BytesStreamOutput output = new BytesStreamOutput(); forecaster.writeTo(output); NamedWriteableAwareStreamInput streamInput = new NamedWriteableAwareStreamInput(output.bytes().streamInput(), writableRegistry()); Forecaster parsedForecaster = new Forecaster(streamInput); assertTrue(parsedForecaster.equals(forecaster)); } public void testStreamConstructorNullUiMeta() throws IOException { Forecaster forecaster = TestHelpers.ForecasterBuilder.newInstance().setUiMetadata(null).build(); BytesStreamOutput output = new BytesStreamOutput(); forecaster.writeTo(output); NamedWriteableAwareStreamInput streamInput = new NamedWriteableAwareStreamInput(output.bytes().streamInput(), writableRegistry()); Forecaster parsedForecaster = new Forecaster(streamInput); assertTrue(parsedForecaster.equals(forecaster)); } public void testStreamConstructorNullCustomResult() throws IOException { Forecaster forecaster = TestHelpers.ForecasterBuilder.newInstance().setCustomResultIndex(null).build(); BytesStreamOutput output = new BytesStreamOutput(); forecaster.writeTo(output); NamedWriteableAwareStreamInput streamInput = new NamedWriteableAwareStreamInput(output.bytes().streamInput(), writableRegistry()); Forecaster parsedForecaster = new Forecaster(streamInput); assertTrue(parsedForecaster.equals(forecaster)); } public void testStreamConstructorNullImputationOption() throws IOException { Forecaster forecaster = TestHelpers.ForecasterBuilder.newInstance().setNullImputationOption().build(); BytesStreamOutput output = new BytesStreamOutput(); forecaster.writeTo(output); NamedWriteableAwareStreamInput streamInput = new NamedWriteableAwareStreamInput(output.bytes().streamInput(), writableRegistry()); Forecaster parsedForecaster = new Forecaster(streamInput); assertTrue(parsedForecaster.equals(forecaster)); } }