Skip to content

Commit

Permalink
Merge pull request #196 from cita-cloud/add_kafka_testcase
Browse files Browse the repository at this point in the history
add kafka exporter testcase
  • Loading branch information
rink1969 authored Jun 18, 2024
2 parents 497541c + 84ee10c commit 6c4e360
Show file tree
Hide file tree
Showing 36 changed files with 30,549 additions and 275 deletions.
12 changes: 6 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ FROM python:slim-bullseye

WORKDIR /

RUN /bin/sh -c set -eux;\
apt-get update;\
apt-get install -y curl
RUN apt-get update \
&& apt-get install -y --no-install-recommends crul mysql-client-5.7 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# install cldi
COPY --from=registry.devops.rivtower.com/cita-cloud/cloud-cli:latest /usr/bin/cldi /usr/local/bin/

Expand All @@ -13,6 +15,4 @@ RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/s
RUN install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# install modules
RUN pip install tenacity
RUN pip install PyYaml
RUN pip install kubernetes
RUN pip install tenacity PyYaml kubernetes pymysql
27 changes: 25 additions & 2 deletions test/cleanup/scripts/delete_chain.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,30 @@
kubectl delete -f test/resource/$CHAIN_TYPE -n $NAMESPACE --recursive
kubectl delete -f test/operations/resource/$CHAIN_TYPE -n $NAMESPACE --recursive

kubectl delete -f test/resource/minio.yaml -n $NAMESPACE --request-timeout=30s
kubectl delete pvc datadir-minio-0 -n $NAMESPACE --request-timeout=30s


kubectl delete pvc -n $NAMESPACE -l app.kubernetes.io/chain-name=$CHAIN_NAME

if [ "$CHAIN_TYPE" = "raft" ]; then
kubectl delete -f test/resource/minio.yaml -n $NAMESPACE --request-timeout=30s
kubectl delete pvc datadir-minio-0 -n $NAMESPACE --request-timeout=30s
fi

if [ "$CHAIN_TYPE" = "overlord" ]; then
# delete strimzi kafka and kafka-bridge
sed -i "s/xxxxxx/$NAMESPACE/g" test/resource/kafka/strimzi.yaml
kubectl delete -f test/resource/kafka/kafka-bridge.yaml -n $NAMESPACE --request-timeout=30s
kubectl delete -f test/resource/kafka/kafka-single-node.yaml -n $NAMESPACE --request-timeout=30s
kubectl delete -f test/resource/kafka/strimzi.yaml -n $NAMESPACE --request-timeout=30s
kubectl delete pvc data-0-my-cluster-dual-role-0 -n $NAMESPACE --request-timeout=30s

# delete doris
sed -i "s/xxxxxx/$NAMESPACE/g" test/resource/doris/operator.yaml
kubectl delete -f test/resource/doris/doriscluster-sample-storageclass.yaml -n $NAMESPACE --request-timeout=30s
kubectl delete -f test/resource/doris/operator.yaml --request-timeout=30s
kubectl delete -f test/resource/doris/doris.selectdb.com_dorisclusters.yaml --request-timeout=30s
kubectl delete pvc belog-doriscluster-sample-storageclass1-be-0 -n $NAMESPACE --request-timeout=30s
kubectl delete pvc betest-doriscluster-sample-storageclass1-be-0 -n $NAMESPACE --request-timeout=30s
kubectl delete pvc felog-doriscluster-sample-storageclass1-fe-0 -n $NAMESPACE --request-timeout=30s
kubectl delete pvc fetest-doriscluster-sample-storageclass1-fe-0 -n $NAMESPACE --request-timeout=30s
fi
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
apiVersion: v1
kind: ConfigMap
binaryData:
private_key: NGRjODNhMTRkMDlhMDgxMjhmNjU4MmY2YjI1N2NlOGZiYTNkZTcxZjJmZjM2MTcxMzBiNWU4M2NlZThkYWY2Nw==
private_key: NmZlZTFjNGU2M2JiYmRlMmExNWMwOTc5M2RmYzNmZWI4ZTM0OTQyNzk4MTg1MTczOWE0MGY5YzAwZjc3MmY0OQ==
data:
node_address: d866ae8e99bd44c10a072d3540e9cf9568b21f75
validator_address: 97c6676095e6132108e27653429b8d5e235f31d62529d34d0822dee3d83490df6f5fd5f02b855377cd57e402a87d77c3
node_address: 03e7c8ae36973ba152df8954721bd618f1c85b60
validator_address: a68865c8a7f416b999b0aa597cbc877393b63d47b5e214a9a001cf925bdc473ae3b814938f4eac2951beb02114500249
metadata:
labels:
app.kubernetes.io/chain-name: test-chain-overlord
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,27 @@ data:
[network_zenoh]
ca_cert = """
-----BEGIN CERTIFICATE-----
MIIBdTCCARqgAwIBAgIUVvLZ6RqSgFcFc7iP8IeuJRTbi5EwCgYIKoZIzj0EAwIw
MIIBdDCCARqgAwIBAgIUe/Li6ogJuBqbYfIBoIRixxRVx+cwCgYIKoZIzj0EAwIw
HzEQMA4GA1UECgwHQ0lUQUh1YjELMAkGA1UEAxMCQ0EwIBcNNzUwMTAxMDAwMDAw
WhgPNDA5NjAxMDEwMDAwMDBaMB8xEDAOBgNVBAoMB0NJVEFIdWIxCzAJBgNVBAMT
AkNBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ndjr/OcAE0uyIZpgnzMzwu6
TdVBFSK0IdZHlie3q4pSpEG1eQJVzgcOGemPsiTdvAqrk8pf5Fl2OYoFRC1eNqMy
MDAwHQYDVR0OBBYEFNby2ekakoBXBXO4j/CHriUU24uRMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSQAwRgIhALrPyzxBp/G+x6ErrUG3OkSx/NYA4l0JgTWh
5X5Cc07yAiEAjIQZp1Y8E166rCHE2zfyHLPDZ0OLdQrFhRR+k1stqGc=
AkNBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvTA++E8lK6KJKUIMMUQM5tfH
BiyyA+B85dYkfiEFARPcFaqTYl1UCe581C6GWUi36/ZLmgozYKbL/Pre63AkI6My
MDAwHQYDVR0OBBYEFPvy4uqICbgam2HyAaCEYscUVcfnMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIhANb1AaJm6x7ii70cnrdNCbgI2roN+/PqGqKv
01C8GiXaAiAbU7sVNkrPZqxYmWjBrShFfhdMr3LbzGwXMd5l3Whc0w==
-----END CERTIFICATE-----
"""
cert = """
-----BEGIN CERTIFICATE-----
MIIBgjCCASegAwIBAgIURLDwVlb+rLAu3Wuw8x28t9rhV+4wCgYIKoZIzj0EAwIw
MIIBgTCCASegAwIBAgIUBmMbXOjZKvSjcaRFbieyXxqfYt4wCgYIKoZIzj0EAwIw
HzEQMA4GA1UECgwHQ0lUQUh1YjELMAkGA1UEAxMCQ0EwIBcNNzUwMTAxMDAwMDAw
WhgPNDA5NjAxMDEwMDAwMDBaMDYxEDAOBgNVBAoMB0NJVEFIdWIxIjAgBgNVBAMT
GXRlc3QtY2hhaW4tb3ZlcmxvcmQtbm9kZTQwWTATBgcqhkjOPQIBBggqhkjOPQMB
BwNCAATdD+Gs+8gu1ArPyqk1AwyTTRCPN+lp1rOYg0p4VaRzSuF3ZjuWOxmJBAww
TdN/BTm3EWRHMAPVSj17QJuRgcjhoygwJjAkBgNVHREEHTAbghl0ZXN0LWNoYWlu
LW92ZXJsb3JkLW5vZGU0MAoGCCqGSM49BAMCA0kAMEYCIQDXPDOjyR6H5yWzy9fe
+HRysNvLE0hjejno3QUhYTgcegIhAMQ8Ix0jRul8ECmQRJA5WXoLTL+Bph1zSpVA
HY7dgeS8
BwNCAATV+2qaXlc/54I5/0o2DtlJK1+vtERYdEk3l8rYiYLOj3bJ3FnJE8oDlvim
smbMgC/xnN6ayKjowchPZHec+5eKoygwJjAkBgNVHREEHTAbghl0ZXN0LWNoYWlu
LW92ZXJsb3JkLW5vZGU0MAoGCCqGSM49BAMCA0gAMEUCIBHLIbuw1OeLCa2yv8qz
8g6HB3/w6vHFMXwSacmSQvpkAiEA1qDDGxyRHsi4/jzOvb16+seMiR5W2bsG0vxG
KBbWAkE=
-----END CERTIFICATE-----
"""
chain_id = "f43b00f1e0d0b3b5a7c5692f622aa550f80612c3a8b73eec436cb02c1e616abe"
Expand All @@ -37,9 +37,9 @@ data:
port = 40000
priv_key = """
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgcsxzz5Xz3iyD7zTb
oKjROXzGZwiNdk6N5RY1pas5LWahRANCAATdD+Gs+8gu1ArPyqk1AwyTTRCPN+lp
1rOYg0p4VaRzSuF3ZjuWOxmJBAwwTdN/BTm3EWRHMAPVSj17QJuRgcjh
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6tlu9Dw6+Acoh4hS
pTDUXFzWc7UDdYPCoYmhsAGDQOChRANCAATV+2qaXlc/54I5/0o2DtlJK1+vtERY
dEk3l8rYiYLOj3bJ3FnJE8oDlvimsmbMgC/xnN6ayKjowchPZHec+5eK
-----END PRIVATE KEY-----
"""
protocol = "quic"
Expand Down Expand Up @@ -111,13 +111,17 @@ data:
storage_port = 50003
[storage_opendal.cloud_storage]
access_key_id = "admin"
bucket = "cita-cloud"
endpoint = "http://minio:9000"
region = "cn-east-1"
root = "overlord"
secret_access_key = "testtest"
service_type = "s3"
access_key_id = ""
bucket = ""
endpoint = ""
region = ""
root = ""
secret_access_key = ""
service_type = ""
[storage_opendal.exporter]
base_path = "http://my-bridge-bridge-service:8080"
chain_name = "test-chain-overlord"
[storage_opendal.log_config]
filter = "info"
Expand All @@ -126,7 +130,7 @@ data:
[genesis_block]
prevhash = "0x0000000000000000000000000000000000000000000000000000000000000000"
timestamp = 1710332160572
timestamp = 1718694928407
[system_config]
admin = "9bab5858df4a9e84ff3958884a01a4fce5e07edb"
Expand All @@ -135,10 +139,10 @@ data:
chain_id = "f43b00f1e0d0b3b5a7c5692f622aa550f80612c3a8b73eec436cb02c1e616abe"
quota_limit = 1073741824
validators = [
"91177beffce0c05a64fdbf40547c9bf2899c8cb5859ed7b9a6e20ac74e7579fdbd70a0f63e9b531392e5c8a0938d91b2",
"88999aa958d5c17998bafc0ce469a0375b1dd9d4e79f4dbf4630e54d9d6a01d67914d1a9be7e80cf862a9a95d47d01b0",
"95f246284995bc34f017672600a346c2f547306e3cb3e5563ca75549d31bea85e1a9faa5e77af9090d63fb1b57c70533",
"a1654c4c63b52c8264160aed0b28dafcf0ae8bfccff09552b36e17de2412a91d4fda4b49073cfeee4e763661d1ddfff9",
"95f4713a71709d77bfcdfe824bfd0b0a02d80f32480c55c005a56eab052f1caf4ff2afe1f0d28210f567fe51185dc343",
"902807e5e4558433c530c763529661255f89766a764f9586fc4f0a85a81045feadf426aff4af43ebfeb8dea50fd90b52",
"8e88e0465ee5f852acc718ffb064a916c93cfe8d838025383329087754253cbef6a755c797ae334f8425dc2f00ca2006",
"9656ab66de72f8e00031be1fd3504dc6ad7c7511660693bff3df68ec77e6f1ca5d23b1c5f9c23b296b4ce191b4f8a75a",
]
version = 0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
apiVersion: v1
kind: ConfigMap
binaryData:
private_key: MzQzMGY2ZDIzNmEzNmJkNjYwNDY0MjM2Yzk2YTMzYjY1MTJmMzExZmM3ODQ1NWNkMzI1NTRkZmZjMGEyZWM1MA==
private_key: NjlmYWQ2NGZjMjNiNTlkMDMzMjgwNWFiYTAyOWJiZmY2ZjBmNjgwOGYzOTU5NzI4NWQ3Y2VlMDlhMjk3ZmU1YQ==
data:
node_address: 28441a2271581a92e7d12e0c575ed27e10cb63e8
validator_address: 28441a2271581a92e7d12e0c575ed27e10cb63e8
node_address: 3e03dcb9b712140cb1ccd253d9b363af1046c0bf
validator_address: 3e03dcb9b712140cb1ccd253d9b363af1046c0bf
metadata:
labels:
app.kubernetes.io/chain-name: test-chain-raft
Expand Down
42 changes: 23 additions & 19 deletions test/operations/resource/raft/test-chain-raft-node4/cm-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,26 @@ data:
[network_zenoh]
ca_cert = """
-----BEGIN CERTIFICATE-----
MIIBdDCCARqgAwIBAgIUCjGECYVzGsUYw40WazW4OD3mP7swCgYIKoZIzj0EAwIw
MIIBdTCCARqgAwIBAgIUYj0sVWTdTX6qaQkeBB3J2T+j6qAwCgYIKoZIzj0EAwIw
HzEQMA4GA1UECgwHQ0lUQUh1YjELMAkGA1UEAxMCQ0EwIBcNNzUwMTAxMDAwMDAw
WhgPNDA5NjAxMDEwMDAwMDBaMB8xEDAOBgNVBAoMB0NJVEFIdWIxCzAJBgNVBAMT
AkNBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXeKmAjEqtuu1TgHdoW2HBAxl
0VobxKLIsRcdnNxE37sg+5QeQZhdVm2Br8TLNJ1ZbaQYmuDbgHq2rYto67KPfKMy
MDAwHQYDVR0OBBYEFIoxhAmFcxrFGMONFms1uDg95j+7MA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSAAwRQIgc48PEcKNylJ0B515Lw1ERKLPxZgJnx/gRi2p
31TF5A8CIQCCU1YdO6sYHqZRnjyuOTfUNZW4S/rHwRZEUQkF06tYKQ==
AkNBMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5PRdPVbTQfp2+nJQ0eEsIVt/
a2/WXIYl4cDnMXWio68l+6k/EsslZLTJHiNPka38LrqW0AoGGLGxTcZFRVA5q6My
MDAwHQYDVR0OBBYEFGI9LFVk3U1+qmkJHgQdydk/o+qgMA8GA1UdEwEB/wQFMAMB
Af8wCgYIKoZIzj0EAwIDSQAwRgIhAPUhpvQxM49ld1Xypr4qeK0lz+2kKe3Fb15J
jNa4WIX+AiEAnV7/ewGQ3iUzLbwRfu9EeU81HKbCvKZd3Bek8Zke7aU=
-----END CERTIFICATE-----
"""
cert = """
-----BEGIN CERTIFICATE-----
MIIBeDCCAR+gAwIBAgIUBFF1DqdN8pTuOztnkrFTmhA+1SIwCgYIKoZIzj0EAwIw
MIIBeTCCAR+gAwIBAgIUYp1v+dXarKYRIdEoN+X5OnhxKkwwCgYIKoZIzj0EAwIw
HzEQMA4GA1UECgwHQ0lUQUh1YjELMAkGA1UEAxMCQ0EwIBcNNzUwMTAxMDAwMDAw
WhgPNDA5NjAxMDEwMDAwMDBaMDIxEDAOBgNVBAoMB0NJVEFIdWIxHjAcBgNVBAMT
FXRlc3QtY2hhaW4tcmFmdC1ub2RlNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BHKQIxwzNJRHLZHaKrqZx8KMigJTwvsTk9aVl8/uR53GwjBOcUPdwI4DJ1wmhmLc
i08TSJWa8yHLjM1TX2HN3sGjJDAiMCAGA1UdEQQZMBeCFXRlc3QtY2hhaW4tcmFm
dC1ub2RlNDAKBggqhkjOPQQDAgNHADBEAiAmgJgFJoecExiW0dLJp0xc1WRkfUdA
KPpiZEJW9N3p8QIgdJjGN8VAA/gKde5mSxlOoabqWEB63DpnQ+glyCbukIE=
BFZdgMsT1tBeFllomy2Ad8WrAVsd3PUGiD5IiiaEcTKTB2OoTCd/c/H7bpZv433b
lTZMs2Is3IWOQctFaUS6N5WjJDAiMCAGA1UdEQQZMBeCFXRlc3QtY2hhaW4tcmFm
dC1ub2RlNDAKBggqhkjOPQQDAgNIADBFAiBEkTrPkihLoqYFXbs3d50S6VRlwS16
HcurpYBig4QB1AIhAMNimT+4CFWfZcDo0aYatOEOEUefLvqPUP2LHSc14UTv
-----END CERTIFICATE-----
"""
chain_id = "dc4257d3bdc69554939072abac52e72b6c4a0b8d00c6fda5bc1bacbc5a4cb00f"
Expand All @@ -36,9 +36,9 @@ data:
port = 40000
priv_key = """
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgODsdwpVGtgy4M4Vl
0x/n+abpSysYzi76++yvkJVJCV+hRANCAARykCMcMzSURy2R2iq6mcfCjIoCU8L7
E5PWlZfP7kedxsIwTnFD3cCOAydcJoZi3ItPE0iVmvMhy4zNU19hzd7B
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2nbd2OfBO++wHQVy
RLGKYEpPFFyItAFF/+HdTeVKddShRANCAARWXYDLE9bQXhZZaJstgHfFqwFbHdz1
Bog+SIomhHEykwdjqEwnf3Px+26Wb+N925U2TLNiLNyFjkHLRWlEujeV
-----END PRIVATE KEY-----
"""
protocol = "quic"
Expand Down Expand Up @@ -114,14 +114,18 @@ data:
secret_access_key = "testtest"
service_type = "s3"
[storage_opendal.exporter]
base_path = ""
chain_name = "test-chain-raft"
[storage_opendal.log_config]
filter = "info"
max_level = "info"
service_name = "storage"
[genesis_block]
prevhash = "0x0000000000000000000000000000000000000000000000000000000000000000"
timestamp = 1710332166410
timestamp = 1718694932661
[system_config]
admin = "9bab5858df4a9e84ff3958884a01a4fce5e07edb"
Expand All @@ -130,10 +134,10 @@ data:
chain_id = "dc4257d3bdc69554939072abac52e72b6c4a0b8d00c6fda5bc1bacbc5a4cb00f"
quota_limit = 1073741824
validators = [
"ac9a0cd0a9e60519b1575158044843dabeec1276",
"d5cc5d9443a4c1d8c0f3fc9650538981d8582adf",
"1355af5612e81327151faa0fe76fadeed495444a",
"90a7e0b542cf5ce4997b6b043f6771b1da1e7790",
"a5093b0b475af7f69997ff014a302f6b96a7083b",
"3decec23d841675a4ab21653cc4f5f0b13fb5e3c",
"05a403c866af1fe82f6f28492c5d4a9d1d4a6fb2",
"66b0ca5b80cf7e0639ab03130dead022112a703b",
]
version = 0
Expand Down
4 changes: 4 additions & 0 deletions test/operator/scripts/0_rollback.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
from logger import logger

if __name__ == "__main__":
if os.getenv("CHAIN_TYPE") == "overlord":
print("overlord chain don't need to execute this test")
exit(0)

old_bn = util.get_block_number()
logger.info("the block number before rollback is: {}".format(old_bn))

Expand Down
3 changes: 3 additions & 0 deletions test/operator/scripts/1_rollback_with_delete_consensus.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ def get_nodes(chain_name: str, namespace: str) -> List[Node]:


def main():
if os.getenv("CHAIN_TYPE") == "overlord":
print("overlord chain don't need to execute this test")
exit(0)
old_bn = util.get_block_number()
logger.info("the block number before rollback is: {}".format(old_bn))
nodes = get_nodes(chain_name=os.getenv("CHAIN_NAME"), namespace=os.getenv("NAMESPACE"))
Expand Down
4 changes: 4 additions & 0 deletions test/operator/scripts/2_backup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
from logger import logger

if __name__ == "__main__":
if os.getenv("CHAIN_TYPE") == "overlord":
print("overlord chain don't need to execute this test")
exit(0)

old_bn = util.get_block_number()
logger.info("the block number before backup is: {}".format(old_bn))

Expand Down
4 changes: 4 additions & 0 deletions test/operator/scripts/3_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
from logger import logger

if __name__ == "__main__":
if os.getenv("CHAIN_TYPE") == "overlord":
print("overlord chain don't need to execute this test")
exit(0)

old_bn = util.get_block_number()
logger.info("the block number before backup is: {}".format(old_bn))

Expand Down
60 changes: 60 additions & 0 deletions test/performance/scripts/test-latency.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@

import os
import json
import subprocess
import time
import pymysql

if os.getenv("CHAIN_TYPE") == "raft":
print("raft chain don't need to execute exporter latency test")
exit(0)

# send tx and get tx hash
cmd = "cldi -c default send 0xffffffffffffffffffffffffffffffffff010000 0xabcd"
tx_hash = subprocess.getoutput(cmd).strip()
print(tx_hash)
time1 = time.time()
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time1)))

# get receipt
while True:
time.sleep(1)
cmd = "cldi -c default get receipt {}".format(tx_hash)
result = subprocess.getoutput(cmd)
if not result.__contains__("Error"):
receipt = json.loads(result)
print(receipt)
time2 = time.time()
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time2)))
break

# query from doris
# 打开数据库连接
doris_host="doriscluster-sample-storageclass1-fe-internal.{}.svc.cluster.local".format(os.getenv("NAMESPACE"))
db = pymysql.connect(host=doris_host,
port=9030,
user='root',
password='',
database='citacloud')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute() 方法执行 SQL 查询
hash = "\"{}\"".format(tx_hash[2:])

while True:
time.sleep(1)
cursor.execute("SELECT * from receipts where tx_hash={}".format(hash))
results = cursor.fetchall()
if results:
print(results)
time3 = time.time()
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time3)))
break

db.close()

print("Done")
print("finalize latency: ", time2 - time1)
print("export latency: ", time3 - time2)
Loading

0 comments on commit 6c4e360

Please sign in to comment.