Package org.featureflags

Source Code of org.featureflags.FlagManagerTest

package org.featureflags;

import static org.junit.Assert.assertEquals;

import org.featureflags.FlagManager.FlagState;
import org.featureflags.FlagManager.Result;
import org.junit.Test;

public class FlagManagerTest extends FeatureFlagTest {

    @Test
    public void testGetFlag() {

  FeatureFlags flag = manager.getFlag("ONE");
  assertEquals("get flag ONE", Flags.ONE, flag);
  flag = manager.getFlag("THREE");
  assertEquals("get flag THREE", Flags.THREE, flag);
  flag = manager.getFlag("YOU SHALL NOT EXIST");
  assertEquals("get flag YOU SHALL NOT EXIST", null, flag);
    }

    @Test
    public void testFlipFlag() {
  flipFlag("ONE");
  flipFlag("TWO");
  flipFlag("THREE");
    }

    private void flipFlag(String flagName) {
  FeatureFlags flag = manager.getFlag(flagName);
  boolean status = flag.isUp();
  Result expectedResult = status ? Result.FLIP_DOWN : Result.FLIP_UP;

  Result flipResult = manager.flipFlag(flagName);

  assertEquals("flip flag Result", !status, flag.isUp());
  assertEquals("flip flag Result", expectedResult, flipResult);

  flipResult = manager.flipFlag(flagName);
  expectedResult = status ? Result.FLIP_UP : Result.FLIP_DOWN;
  assertEquals("flip flag Result", status, flag.isUp());
  assertEquals("flip flag Result", expectedResult, flipResult);
    }

    @Test
    public void testFlipFlagForUser() {

  String[] testUsers = new String[] { "bob", "john", "foo", "bar", "bob2", "john2", "foo2", "bar2" };
  String[] flagState = new String[] { "UP", "UP", "DOWN", "UP", "UP", "UP", "DOWN", "UP" };
  FlagThread[] flagThreads = new FlagThread[8];
  for (int i = 0; i < testUsers.length; i++) {
      flagThreads[i] = new FlagThread(testUsers[i]);
      manager.setFlagStateForUserToAndPersist(testUsers[i], Flags.ONE.toString(), FlagState.valueOf(flagState[i]));
  }

  for (int i = 0; i < testUsers.length; i++) {
      Thread thread = new Thread(flagThreads[i]);
      thread.start();
  }

  try {
      Thread.sleep(100);
  } catch (InterruptedException e) {
      e.printStackTrace();
  }

  assertEquals(true, flagThreads[0].isUp());
  assertEquals(true, flagThreads[1].isUp());
  assertEquals(false, flagThreads[2].isUp());
  assertEquals(true, flagThreads[3].isUp());
  assertEquals(true, flagThreads[4].isUp());
  assertEquals(true, flagThreads[5].isUp());
  assertEquals(false, flagThreads[6].isUp());
  assertEquals(true, flagThreads[7].isUp());
  assertEquals(false, Flags.ONE.isUp());

  assertEquals(true, Flags.TWO.isUp());
  manager.setFlagStateForUserToAndPersist("other", Flags.TWO.toString(), FlagState.DOWN);
  assertEquals(true, Flags.TWO.isUp());
  manager.setThreadUserName("other");
  assertEquals(false, Flags.ONE.isUp());
  assertEquals(false, Flags.TWO.isUp());

    }

}
TOP

Related Classes of org.featureflags.FlagManagerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.