blob: b430a8ceca8f817cff751b0223296b57825d8f0d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.internal.processors.igfs;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Map;
import org.apache.ignite.igfs.IgfsMode;
import static org.apache.ignite.igfs.IgfsMode.DUAL_SYNC;
import static org.apache.ignite.igfs.IgfsMode.PRIMARY;
import static org.apache.ignite.igfs.IgfsMode.PROXY;
/**
* {@link IgfsAttributes} test case.
*/
public class IgfsAttributesSelfTest extends IgfsCommonAbstractTest {
/**
* @throws Exception If failed.
*/
public void testSerialization() throws Exception {
Map<String, IgfsMode> pathModes = new HashMap<>();
pathModes.put("path1", PRIMARY);
pathModes.put("path2", PROXY);
IgfsAttributes attrs = new IgfsAttributes("testIgfsName", 513000, 888, "meta", "data", DUAL_SYNC,
pathModes, true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput os = new ObjectOutputStream(bos);
os.writeObject(attrs);
os.close();
IgfsAttributes deserializedAttrs = (IgfsAttributes)new ObjectInputStream(
new ByteArrayInputStream(bos.toByteArray())).readObject();
assertTrue(eq(attrs, deserializedAttrs));
}
/**
* @param attr1 Attributes 1.
* @param attr2 Attributes 2.
* @return Whether equals or not.
* @throws Exception In case of error.
*/
private boolean eq(IgfsAttributes attr1, IgfsAttributes attr2) throws Exception {
assert attr1 != null;
assert attr2 != null;
for (Field f : IgfsAttributes.class.getDeclaredFields()) {
f.setAccessible(true);
if (!Modifier.isStatic(f.getModifiers()) && !f.get(attr1).equals(f.get(attr2)))
return false;
}
return true;
}
}