@Override public int hashCode() { return Objects.hash(getNodes(), getKeySpaces(), getColumnFamilies()); }
/** * Creates a new UpgradeSSTableContext * @param nodes The nodes that will be have their SSTables upgraded. * @param keySpaces The key spaces whose SSTables will be upgraded. If empty, all * non-system key spaces will be cleaned up. * @param columnFamilies The column families whose SSTables will be upgraded. If * empty, all column families will be clean up. * @return A UpgradeSSTableContext constructed from the parameters. */ @JsonCreator public static UpgradeSSTableContext create( @JsonProperty("nodes") final List<String> nodes, @JsonProperty("key_spaces") final List<String> keySpaces, @JsonProperty("column_families") final List<String> columnFamilies) { return new UpgradeSSTableContext(nodes, keySpaces, columnFamilies); }
public UpgradeSSTableContext toContext(CassandraState cassandraState) { return UpgradeSSTableContext.create( new ArrayList<>(getNodes(cassandraState)), getKeySpaces(), getColumnFamiles()); }
private List<String> getColumnFamilies() { return task.getUpgradeSSTableContext().getColumnFamilies(); }
private List<String> getKeySpaces() { if (task.getUpgradeSSTableContext().getKeySpaces().isEmpty()) { return daemon.getNonSystemKeySpaces(); } else { return task.getUpgradeSSTableContext().getKeySpaces(); } }
protected List<Phase> createPhases(UpgradeSSTableContext context) { final Set<String> nodes = new HashSet<>(context.getNodes()); final List<String> daemons = new ArrayList<>(cassandraState.getDaemons().keySet()); Collections.sort(daemons); List<Step> steps = daemons.stream() .filter(daemon -> nodes.contains(daemon)) .map(daemon -> new UpgradeSSTableStep(daemon, cassandraState, provider, context)) .collect(Collectors.toList()); return Arrays.asList(new DefaultPhase("UpgradeSSTable", steps, new SerialStrategy<>(), Collections.emptyList())); } }
@Test public void testTaskStartAlreadyCompleted() throws Exception { final CassandraDaemonTask daemonTask = Mockito.mock(CassandraDaemonTask.class); Mockito.when(cassandraState.get(UPGRADESSTABLE_NODE_0)).thenReturn(Optional.empty()); final HashMap<String, CassandraDaemonTask> map = new HashMap<>(); map.put(NODE_0, null); Mockito.when(cassandraState.getDaemons()).thenReturn(map); final UpgradeSSTableContext context = UpgradeSSTableContext.create(Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); final UpgradeSSTableTask task = Mockito.mock(UpgradeSSTableTask.class); Mockito.when(task.getSlaveId()).thenReturn("1234"); Mockito.when(cassandraState.getOrCreateUpgradeSSTable(daemonTask, CONTEXT)).thenReturn(task); final UpgradeSSTableStep step = new UpgradeSSTableStep(NODE_0, cassandraState, provider, context); final OfferRequirement requirement = Mockito.mock(OfferRequirement.class); Mockito.when(provider.getUpdateOfferRequirement(Mockito.any(), Mockito.any())).thenReturn(requirement); Assert.assertTrue(!step.start().isPresent()); Assert.assertTrue(step.isComplete()); }
@Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof UpgradeSSTableContext)) return false; UpgradeSSTableContext that = (UpgradeSSTableContext) o; return Objects.equals(getNodes(), that.getNodes()) && Objects.equals(getKeySpaces(), that.getKeySpaces()) && Objects.equals(getColumnFamilies(), that.getColumnFamilies()); }
@Test public void testComplete() { final CassandraTask mockCassandraTask = Mockito.mock(CassandraTask.class); Mockito.when(mockCassandraTask.getState()).thenReturn(Protos.TaskState.TASK_FINISHED); Mockito.when(cassandraState.get(UPGRADESSTABLE_NODE_0)) .thenReturn(Optional.ofNullable(mockCassandraTask)); final UpgradeSSTableContext context = UpgradeSSTableContext.create(Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); final UpgradeSSTableStep step = new UpgradeSSTableStep(NODE_0, cassandraState, provider, context); Assert.assertEquals(UPGRADESSTABLE_NODE_0, step.getName()); Assert.assertEquals(NODE_0, step.getDaemon()); Assert.assertTrue(step.isComplete()); }
public UpgradeSSTableContext getUpgradeSSTableContext() { return new UpgradeSSTableContext( data.getNodesList(), data.getKeySpacesList(), data.getColumnFamiliesList()); }
public static final CassandraData createUpgradeSSTableData( final String hostname, final UpgradeSSTableContext context) { return new CassandraData( CassandraTask.TYPE.UPGRADESSTABLE, hostname, context.getNodes(), context.getKeySpaces(), context.getColumnFamilies()); }
@Test public void testInitial() { Mockito.when(cassandraState.get(UPGRADESSTABLE_NODE_0)).thenReturn(Optional.empty()); final UpgradeSSTableContext context = UpgradeSSTableContext.create(Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); final UpgradeSSTableStep step = new UpgradeSSTableStep(NODE_0, cassandraState, provider, context); Assert.assertEquals(UPGRADESSTABLE_NODE_0, step.getName()); Assert.assertEquals(NODE_0, step.getDaemon()); Assert.assertTrue(step.isPending()); }