blob: 829c3f9008bd4261b09274a06eedc82b193e5758 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.config.server.session;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.provision.ProvisionInfo;
import com.yahoo.transaction.Transaction;
import com.yahoo.path.Path;
import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.curator.mock.MockCurator;
import java.util.Optional;
/**
* Overrides application package fetching, because this part is hard to do without feeding a full app.
*
* @author lulf
* @since 5.1
*/
public class MockSessionZKClient extends SessionZooKeeperClient {
private ApplicationPackage app = null;
private Optional<ProvisionInfo> info = null;
private Session.Status sessionStatus;
public MockSessionZKClient(Curator curator, Path rootPath) {
this(curator, rootPath, (ApplicationPackage)null);
}
public MockSessionZKClient(Curator curator, Path rootPath, Optional<ProvisionInfo> provisionInfo) {
this(curator, rootPath);
this.info = provisionInfo;
}
public MockSessionZKClient(Curator curator, Path rootPath, ApplicationPackage application) {
super(curator, rootPath);
this.app = application;
}
public MockSessionZKClient(ApplicationPackage app) {
super(new MockCurator(), Path.createRoot());
this.app = app;
}
@Override
public ApplicationPackage loadApplicationPackage() {
if (app != null) return app;
return new MockApplicationPackage.Builder().withEmptyServices().build();
}
@Override
ProvisionInfo getProvisionInfo() {
return info.orElseThrow(() -> new IllegalStateException("Trying to read provision info, but no provision info exists"));
}
@Override
public Transaction createWriteStatusTransaction(Session.Status status) {
return new DummyTransaction().add((DummyTransaction.RunnableOperation) () -> {
sessionStatus = status;
});
}
@Override
public Session.Status readStatus() {
return sessionStatus;
}
}
|