Skip to content

Commit 3005246

Browse files
authored
feat(api): add resource price for solidity and PBFT (#5451)
1 parent 9ffdf97 commit 3005246

12 files changed

Lines changed: 331 additions & 6 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.tron.core.services.interfaceOnPBFT.http;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import javax.servlet.http.HttpServletResponse;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Component;
8+
import org.tron.core.services.http.GetBandwidthPricesServlet;
9+
import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
10+
11+
@Component
12+
@Slf4j(topic = "API")
13+
public class GetBandwidthPricesOnPBFTServlet extends GetBandwidthPricesServlet {
14+
15+
@Autowired
16+
private WalletOnPBFT walletOnPBFT;
17+
18+
@Override
19+
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
20+
walletOnPBFT.futureGet(() -> super.doGet(request, response));
21+
}
22+
23+
@Override
24+
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
25+
walletOnPBFT.futureGet(() -> super.doPost(request, response));
26+
}
27+
}

framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/GetEnergyPricesOnPBFTServlet.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,19 @@
88
import org.tron.core.services.http.GetEnergyPricesServlet;
99
import org.tron.core.services.interfaceOnPBFT.WalletOnPBFT;
1010

11-
1211
@Component
1312
@Slf4j(topic = "API")
1413
public class GetEnergyPricesOnPBFTServlet extends GetEnergyPricesServlet {
1514

1615
@Autowired
1716
private WalletOnPBFT walletOnPBFT;
1817

18+
@Override
1919
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2020
walletOnPBFT.futureGet(() -> super.doGet(request, response));
2121
}
2222

23+
@Override
2324
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
2425
walletOnPBFT.futureGet(() -> super.doPost(request, response));
2526
}

framework/src/main/java/org/tron/core/services/interfaceOnPBFT/http/PBFT/HttpApiOnPBFTService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.tron.core.services.interfaceOnPBFT.http.GetAssetIssueListByNameOnPBFTServlet;
2323
import org.tron.core.services.interfaceOnPBFT.http.GetAssetIssueListOnPBFTServlet;
2424
import org.tron.core.services.interfaceOnPBFT.http.GetAvailableUnfreezeCountOnPBFTServlet;
25+
import org.tron.core.services.interfaceOnPBFT.http.GetBandwidthPricesOnPBFTServlet;
2526
import org.tron.core.services.interfaceOnPBFT.http.GetBlockByIdOnPBFTServlet;
2627
import org.tron.core.services.interfaceOnPBFT.http.GetBlockByLatestNumOnPBFTServlet;
2728
import org.tron.core.services.interfaceOnPBFT.http.GetBlockByLimitNextOnPBFTServlet;
@@ -156,6 +157,8 @@ public class HttpApiOnPBFTService implements Service {
156157
@Autowired
157158
private GetBurnTrxOnPBFTServlet getBurnTrxOnPBFTServlet;
158159
@Autowired
160+
private GetBandwidthPricesOnPBFTServlet getBandwidthPricesOnPBFTServlet;
161+
@Autowired
159162
private GetEnergyPricesOnPBFTServlet getEnergyPricesOnPBFTServlet;
160163

161164
@Autowired
@@ -258,6 +261,8 @@ public void start() {
258261
"/isshieldedtrc20contractnotespent");
259262
context.addServlet(new ServletHolder(getBurnTrxOnPBFTServlet),
260263
"/getburntrx");
264+
context.addServlet(new ServletHolder(getBandwidthPricesOnPBFTServlet),
265+
"/getbandwidthprices");
261266
context.addServlet(new ServletHolder(getEnergyPricesOnPBFTServlet),
262267
"/getenergyprices");
263268
context.addServlet(new ServletHolder(getBlockOnPBFTServlet),
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.tron.core.services.interfaceOnSolidity.http;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import javax.servlet.http.HttpServletResponse;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Component;
8+
import org.tron.core.services.http.GetBandwidthPricesServlet;
9+
import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
10+
11+
@Component
12+
@Slf4j(topic = "API")
13+
public class GetBandwidthPricesOnSolidityServlet extends GetBandwidthPricesServlet {
14+
15+
@Autowired
16+
private WalletOnSolidity walletOnSolidity;
17+
18+
@Override
19+
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
20+
walletOnSolidity.futureGet(() -> super.doGet(request, response));
21+
}
22+
23+
@Override
24+
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
25+
walletOnSolidity.futureGet(() -> super.doPost(request, response));
26+
}
27+
}
28+

framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/GetEnergyPricesOnSolidityServlet.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,19 @@
88
import org.tron.core.services.http.GetEnergyPricesServlet;
99
import org.tron.core.services.interfaceOnSolidity.WalletOnSolidity;
1010

11-
1211
@Component
1312
@Slf4j(topic = "API")
1413
public class GetEnergyPricesOnSolidityServlet extends GetEnergyPricesServlet {
1514

1615
@Autowired
1716
private WalletOnSolidity walletOnSolidity;
1817

18+
@Override
1919
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2020
walletOnSolidity.futureGet(() -> super.doGet(request, response));
2121
}
2222

23+
@Override
2324
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
2425
walletOnSolidity.futureGet(() -> super.doPost(request, response));
2526
}

framework/src/main/java/org/tron/core/services/interfaceOnSolidity/http/solidity/HttpApiOnSolidityService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.tron.core.services.interfaceOnSolidity.http.GetAssetIssueListByNameOnSolidityServlet;
2323
import org.tron.core.services.interfaceOnSolidity.http.GetAssetIssueListOnSolidityServlet;
2424
import org.tron.core.services.interfaceOnSolidity.http.GetAvailableUnfreezeCountOnSolidityServlet;
25+
import org.tron.core.services.interfaceOnSolidity.http.GetBandwidthPricesOnSolidityServlet;
2526
import org.tron.core.services.interfaceOnSolidity.http.GetBlockByIdOnSolidityServlet;
2627
import org.tron.core.services.interfaceOnSolidity.http.GetBlockByLatestNumOnSolidityServlet;
2728
import org.tron.core.services.interfaceOnSolidity.http.GetBlockByLimitNextOnSolidityServlet;
@@ -168,6 +169,8 @@ public class HttpApiOnSolidityService implements Service {
168169
@Autowired
169170
private GetMarketPairListOnSolidityServlet getMarketPairListOnSolidityServlet;
170171
@Autowired
172+
private GetBandwidthPricesOnSolidityServlet getBandwidthPricesOnSolidityServlet;
173+
@Autowired
171174
private GetEnergyPricesOnSolidityServlet getEnergyPricesOnSolidityServlet;
172175

173176
@Autowired
@@ -290,6 +293,8 @@ public void start() {
290293
context.addServlet(new ServletHolder(getRewardServlet), "/walletsolidity/getReward");
291294
context
292295
.addServlet(new ServletHolder(getBurnTrxOnSolidityServlet), "/walletsolidity/getburntrx");
296+
context.addServlet(new ServletHolder(getBandwidthPricesOnSolidityServlet),
297+
"/walletsolidity/getbandwidthprices");
293298
context.addServlet(new ServletHolder(getEnergyPricesOnSolidityServlet),
294299
"/walletsolidity/getenergyprices");
295300

framework/src/test/java/org/tron/common/BaseTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@ public abstract class BaseTest {
3737
@AfterClass
3838
public static void destroy() {
3939
Args.clearParam();
40-
if (StringUtils.isNotEmpty(dbPath) && FileUtil.deleteDir(new File(dbPath))) {
41-
logger.info("Release resources successful.");
42-
} else {
43-
logger.info("Release resources failure.");
40+
if (StringUtils.isNotEmpty(dbPath)) {
41+
if (FileUtil.deleteDir(new File(dbPath))) {
42+
logger.info("Release resources successful.");
43+
} else {
44+
logger.info("Release resources failure.");
45+
}
4446
}
4547
}
4648

framework/src/test/java/org/tron/common/utils/client/utils/HttpMethed.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.http.params.CoreConnectionPNames;
2424
import org.apache.http.util.EntityUtils;
2525
import org.junit.Assert;
26+
import org.springframework.mock.web.MockHttpServletRequest;
2627
import org.tron.api.GrpcAPI;
2728
import org.tron.common.utils.ByteArray;
2829
import org.tron.common.utils.ByteUtil;
@@ -4876,4 +4877,11 @@ public static HttpResponse getTransactionFromPending(String httpNode, String txi
48764877
}
48774878
return response;
48784879
}
4880+
4881+
public static MockHttpServletRequest createRequest(String method) {
4882+
MockHttpServletRequest request = new MockHttpServletRequest();
4883+
request.setMethod(method);
4884+
request.setCharacterEncoding("UTF-8");
4885+
return request;
4886+
}
48794887
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.tron.core.services.interfaceOnPBFT.http;
2+
3+
import static org.junit.Assert.assertTrue;
4+
import static org.junit.Assert.fail;
5+
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
6+
7+
import com.alibaba.fastjson.JSONObject;
8+
import java.io.IOException;
9+
import java.io.UnsupportedEncodingException;
10+
import javax.annotation.Resource;
11+
import org.apache.http.client.methods.HttpGet;
12+
import org.apache.http.client.methods.HttpPost;
13+
import org.junit.BeforeClass;
14+
import org.junit.ClassRule;
15+
import org.junit.Test;
16+
import org.junit.rules.TemporaryFolder;
17+
import org.springframework.mock.web.MockHttpServletRequest;
18+
import org.springframework.mock.web.MockHttpServletResponse;
19+
import org.tron.common.BaseTest;
20+
import org.tron.core.Constant;
21+
import org.tron.core.config.args.Args;
22+
23+
public class GetBandwidthPricesOnPBFTServletTest extends BaseTest {
24+
25+
@ClassRule
26+
public static final TemporaryFolder temporaryFolder = new TemporaryFolder();
27+
@Resource
28+
private GetBandwidthPricesOnPBFTServlet getBandwidthPricesOnPBFTServlet;
29+
30+
@BeforeClass
31+
public static void init() throws IOException {
32+
Args.setParam(new String[]{"-d", temporaryFolder.newFolder().toString()}, Constant.TEST_CONF);
33+
}
34+
35+
@Test
36+
public void testGet() {
37+
MockHttpServletRequest request = createRequest(HttpGet.METHOD_NAME);
38+
MockHttpServletResponse response = new MockHttpServletResponse();
39+
getBandwidthPricesOnPBFTServlet.doPost(request, response);
40+
try {
41+
String contentAsString = response.getContentAsString();
42+
JSONObject result = JSONObject.parseObject(contentAsString);
43+
assertTrue(result.containsKey("prices"));
44+
} catch (UnsupportedEncodingException e) {
45+
fail(e.getMessage());
46+
}
47+
}
48+
49+
@Test
50+
public void testPost() {
51+
MockHttpServletRequest request = createRequest(HttpPost.METHOD_NAME);
52+
try {
53+
MockHttpServletResponse response = new MockHttpServletResponse();
54+
getBandwidthPricesOnPBFTServlet.doPost(request, response);
55+
String contentAsString = response.getContentAsString();
56+
JSONObject result = JSONObject.parseObject(contentAsString);
57+
assertTrue(result.containsKey("prices"));
58+
} catch (UnsupportedEncodingException e) {
59+
fail(e.getMessage());
60+
}
61+
}
62+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.tron.core.services.interfaceOnPBFT.http;
2+
3+
import static org.junit.Assert.assertTrue;
4+
import static org.junit.Assert.fail;
5+
import static org.tron.common.utils.client.utils.HttpMethed.createRequest;
6+
7+
import com.alibaba.fastjson.JSONObject;
8+
import java.io.IOException;
9+
import java.io.UnsupportedEncodingException;
10+
import javax.annotation.Resource;
11+
import org.apache.http.client.methods.HttpGet;
12+
import org.apache.http.client.methods.HttpPost;
13+
import org.junit.BeforeClass;
14+
import org.junit.ClassRule;
15+
import org.junit.Test;
16+
import org.junit.rules.TemporaryFolder;
17+
import org.springframework.mock.web.MockHttpServletRequest;
18+
import org.springframework.mock.web.MockHttpServletResponse;
19+
import org.tron.common.BaseTest;
20+
import org.tron.core.Constant;
21+
import org.tron.core.config.args.Args;
22+
23+
public class GetEnergyPricesOnPBFTServletTest extends BaseTest {
24+
25+
@ClassRule
26+
public static final TemporaryFolder temporaryFolder = new TemporaryFolder();
27+
@Resource
28+
private GetEnergyPricesOnPBFTServlet getEnergyPricesOnPBFTServlet;
29+
30+
@BeforeClass
31+
public static void init() throws IOException {
32+
Args.setParam(new String[]{"-d", temporaryFolder.newFolder().toString()}, Constant.TEST_CONF);
33+
}
34+
35+
@Test
36+
public void testGet() {
37+
MockHttpServletRequest request = createRequest(HttpGet.METHOD_NAME);
38+
MockHttpServletResponse response = new MockHttpServletResponse();
39+
getEnergyPricesOnPBFTServlet.doPost(request, response);
40+
try {
41+
String contentAsString = response.getContentAsString();
42+
JSONObject result = JSONObject.parseObject(contentAsString);
43+
assertTrue(result.containsKey("prices"));
44+
} catch (UnsupportedEncodingException e) {
45+
fail(e.getMessage());
46+
}
47+
}
48+
49+
@Test
50+
public void testPost() {
51+
MockHttpServletRequest request = createRequest(HttpPost.METHOD_NAME);
52+
try {
53+
MockHttpServletResponse response = new MockHttpServletResponse();
54+
getEnergyPricesOnPBFTServlet.doPost(request, response);
55+
String contentAsString = response.getContentAsString();
56+
JSONObject result = JSONObject.parseObject(contentAsString);
57+
assertTrue(result.containsKey("prices"));
58+
} catch (UnsupportedEncodingException e) {
59+
fail(e.getMessage());
60+
}
61+
}
62+
}

0 commit comments

Comments
 (0)