mirror of
https://github.com/aljazceru/lspd.git
synced 2025-12-24 01:04:21 +01:00
Use local mempool api in tests
This commit is contained in:
85
itest/mempool_api.go
Normal file
85
itest/mempool_api.go
Normal file
@@ -0,0 +1,85 @@
|
||||
package itest
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"github.com/breez/lntest"
|
||||
)
|
||||
|
||||
type RecommendedFeesResponse struct {
|
||||
FastestFee float64 `json:"fastestFee"`
|
||||
HalfHourFee float64 `json:"halfHourFee"`
|
||||
HourFee float64 `json:"hourFee"`
|
||||
EconomyFee float64 `json:"economyFee"`
|
||||
MinimumFee float64 `json:"minimumFee"`
|
||||
}
|
||||
|
||||
type mempoolApi struct {
|
||||
addr string
|
||||
h *lntest.TestHarness
|
||||
fees *RecommendedFeesResponse
|
||||
lis net.Listener
|
||||
}
|
||||
|
||||
func NewMempoolApi(h *lntest.TestHarness) *mempoolApi {
|
||||
port, err := lntest.GetPort()
|
||||
if err != nil {
|
||||
h.T.Fatalf("Failed to get port for mempool api: %v", err)
|
||||
}
|
||||
|
||||
return &mempoolApi{
|
||||
addr: fmt.Sprintf("127.0.0.1:%d", port),
|
||||
h: h,
|
||||
fees: &RecommendedFeesResponse{
|
||||
MinimumFee: 1,
|
||||
EconomyFee: 1,
|
||||
HourFee: 1,
|
||||
HalfHourFee: 1,
|
||||
FastestFee: 1,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (m *mempoolApi) Address() string {
|
||||
return fmt.Sprintf("http://%s/api/v1/", m.addr)
|
||||
}
|
||||
|
||||
func (m *mempoolApi) SetFees(fees *RecommendedFeesResponse) {
|
||||
m.fees = fees
|
||||
}
|
||||
|
||||
func (m *mempoolApi) Start() {
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/api/v1/fees/recommended", func(w http.ResponseWriter, r *http.Request) {
|
||||
j, err := json.Marshal(m.fees)
|
||||
if err != nil {
|
||||
m.h.T.Fatalf("Failed to marshal mempool fees: %v", err)
|
||||
}
|
||||
_, err = w.Write(j)
|
||||
if err != nil {
|
||||
m.h.T.Fatalf("Failed to write mempool response: %v", err)
|
||||
}
|
||||
})
|
||||
lis, err := net.Listen("tcp", m.addr)
|
||||
if err != nil {
|
||||
m.h.T.Fatalf("failed to start mempool api: %v", err)
|
||||
}
|
||||
|
||||
m.lis = lis
|
||||
m.h.AddStoppable(m)
|
||||
|
||||
go http.Serve(lis, mux)
|
||||
}
|
||||
|
||||
func (m *mempoolApi) Stop() error {
|
||||
lis := m.lis
|
||||
if lis == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
m.lis = nil
|
||||
return lis.Close()
|
||||
}
|
||||
Reference in New Issue
Block a user