Video summary
The primary focus of this community call was the development and implementation of a new Test Compatibility Kit (TCK) action runner designed to streamline the verification process for the Hiero SDKs. Previously, contributors were required to manually run TCK tests on their local machines, which often necessitated running a local node and utilizing high-performance computers, creating significant barriers for testing compatibility across different environments. The team introduced a Docker-based solution that automates this process by pulling the necessary TCK repository and executing specific compatibility checks against the JSON-RPC server. This tool allows reviewers to verify within a Pull Request whether newly implemented methods strictly adhere to the official TCK specifications, ensuring that both unit tests and full compatibility suites pass before code is merged.
During the presentation, the team demonstrated how the new runner generates detailed reports that categorize test results into passing, pending, or failing states based on specific services like file creation or token transfers. The system can be configured to run either a full suite of tests or targeted checks for individual services, with the entire process taking approximately 15 minutes once the local node is prepared. This automation addresses a critical gap in the continuous integration pipeline, as previous workflows lacked automated CI actions specifically for TCK verification. By shifting this responsibility to the action runner, the team ensures that documentation and code implementations are rigorously validated against the latest specs without relying on manual intervention or specific hardware capabilities.
The meeting also addressed urgent matters regarding the deprecation of the account balance query method, which is scheduled to be removed from several SDKs by September 9th. While the Java SDK had already implemented the necessary changes, other languages like JavaScript and Python were still finalizing their updates. The team coordinated efforts to create corresponding issues in Swift, C++, Rust, and other SDK repositories to ensure a synchronized transition away from the deprecated method. Additionally, the discussion covered progress on the website redesign, with plans to merge remaining PRs for the home page and issue pages by the end of the week, leaving only the blog page for the following week. The team concluded by noting their excellent security posture, highlighted by an "excellent" health score on the LFX Insights platform and no known vulnerabilities, before confirming that the new TCK runner would soon be presented as a full project to the Technical Steering Committee.
Read the full video transcript
Hello everybody.
>> Hi Henry, how are you?
>> You are called unknown unknown Angie. Is
that by purpose?
>> No, it's it's a glitch with Zoom. I can
I think I can fix it. Hold on.
>> Ah.
I I see your picture so I know who you
are but the name is unknown unknown.
>> Yeah, I don't really know why it does
that. It just kind of
shows up that way.
>> What did you say?
>> Midge I ate the beans I ordered here.
>> Hello everyone.
>> Hey, hey.
>> Okay.
Looks like
nobody else is joining.
Who's this?
Joshua's note taker.
Anybody knows that?
>> No.
And I found it here.
>> Okay.
So, anybody has topics for the SDK
meeting?
>> Uh
I have one, but I was waiting to see
Manish if he's joining so cuz
it's me and and him who are working on
on it.
>> Okay.
Do you do you know if he will join?
>> That's what I'm trying to find out.
>> Okay.
>> Uh
Let me see.
>> I think he's not joining cuz he's not
drawing like
>> Okay.
>> Yeah, so
>> Yeah, I think it's already very late for
him, right?
>> Let me see.
I
So,
uh well, what I wanted to talk about is
that
we are
implementing TCK
TCK tests, uh for example, more
effectively in the
Python SDK.
But,
we found out an issue that, for example,
some contributors come in, they would
want to take that, but for you to test
out
something that it is working, you might
need a computer with high compute, and
uh cuz you have to run the have to have
a local node running.
Uh
>> [clears throat]
>> just another piece of
So, that takes
if you don't if you have like a computer
which is not
good, then
you won't be able to test all those
stuffs.
So, me and Manish worked on like a TCK
action runner.
So, we were we in the background working
on its compatibility with other SDKs,
for example, tested it with Java and
Python, so now I want to test it with
other SDKs.
>> What is this exactly?
Um
So, can you explain a bit more concrete
on what it is?
>> And uh TCK come like a compatibility
TCK test runner.
>> Wait, what Yeah, what does a test test
runner mean? Like like um
>> Like for example, if someone is
implementing a TCK method, I just want
to run a PC method for example.
Uh
That runner helps uh ask them them the
reviewers or if there is a reviewer to
see whether they they that method
implemented is okay and all the uh and
all the tests behind it are
uh are passing
in the PR in the exact PR. So it's like
as you see the E2 the E2E tests in the
what?
In the SDK.
>> Can you show that? Because
>> Yeah.
>> Show us like
Would that be possible?
>> Yeah, let me show it to you.
And so can you see my screen?
>> Yep.
>> Yeah, so this is a test a test that as
you see it is in my fork.
So it it is a test file that I wrote
using the TCK runner that
we were building as you see here. So it
runs the the TCK the JSON RPC.
Uh on on the SDK using this Dockerfile.
So it runs that. Then after it runs the
TCK.
Oh, where is it? So it runs the it pulls
that TCK repo and it runs the exact
compatibility file to test that TCK
method or you can run the full test suit
to see whether all file all the methods
uh
are fine or they are passing or to see
even the methods which are not
implemented in the SDK.
And uh let me show you here. Let me For
example, here I ran like service per
service. For example,
uh
I can come to the contract file.
I will use that to the solo action to
>> Mhm.
>> prepare the the solo. Then
uh
we do the
This is
Yeah.
So, now this runs the what? The TCK
against the uh This runs the the test
file against the JSON RPC server
on the solo network.
>> Mhm. How was it done in the past like to
do TCK tests?
>> You run it locally.
>> There was no CI for TCK?
>> Yeah.
>> Really?
>> In the SDKs, it is not there.
>> Oh, I had no idea. I never checked that.
There are so many, you know, like GitHub
action files and and I never checked
that and and this is
I
I cannot believe that. Give me a second.
I I now need need to check that. That
would be
>> Yeah, cuz what we have, we have the E2E
tests.
Uh those are there and uh unit tests,
but for for the actions, those are
there, but for the TCK,
those those are those uh
the CI is not there. The CI action is
not there for that.
So, you have to run them manually on
your machine
to see whether your what the TCK method
you have implemented is working.
So, in the PL, you don't you don't have
anything to see whether it worked or
what, so
that's why we come out with this.
>> But, there was this
um
One second.
I'll share a link with you.
Um or or I can
>> I can share?
>> I'll share. Close up.
Um
So, if you
look at that one. I'm now in the
Hyvä SDK Java, where's the build.gradle,
which has this section about unit and
integration tests.
>> Yeah.
>> And I was assuming, since this setup is
solo and and everything,
that this is executing the um
TCK tests.
So, this is not not doing the TCK tests.
Oh, here. TCK test.
>> Okay.
>> Build TCK, one TCK unit tests.
>> Those are unit tests for TCK.
But, they are compatibility tests. For
example, let me show you here. Uh the
like uh
I can't share. Let me share.
>> Yep.
>> So, yeah. Let me
Where it?
Um
>> Can you see my screen?
>> Yes.
>> Check
here.
For example, here
we have tests
where we have that TCK.
>> Mhm.
>> Unit tests there are there, but we have
also
uh
We have also this
you run the JSON-RPC server
where you have to test it
by using the TCK this TCK repository, is
it?
>> But that would mean I mean
if I now
go to
the
TCK tests are all defined within the TCK
one, right?
>> Yep.
>> This contains the JSON-RPC server and
and this is
>> Can you hear me?
>> I I can hear you. Yeah, yeah, yeah,
yeah, yeah. Um
I'm still like
cannot cannot believe that.
So, when I go now into any pull request
and say seeing Let me check one where
the build has been executed. Like any
pull request, let's go to a closed one,
maybe one that was
merged
in the near past, like 5 days ago there
was one merged.
And
um when I look at
poo, I don't see for poo
for merged poo requests the checks
anymore. Can that be?
Hm.
Um
Okay, here I have one where TCK
tests passed.
So both TCK one TCK unit tests and you
say
that
is something else.
>> [snorts]
>> That just runs the unit tests within the
TCK project.
Is Is that what you're saying?
>> The The like the unit tests for the TCK
they run they they like for example if
there is an implementation for the TCK,
you run for the TCK method, you have to
give it our
unit test for it. You have to write unit
tests for it. Yeah, but what
we don't check
in the PR is that method that you have
implemented, is it compatible with the
TCK specs in the TCK repo? So for that
for that to run it, you have to like
even if you are implementing it, you
have to
for the verification because we had a
meeting with Rob. For the verification,
you have to run you have first of all
you have to have the JSON RPC server.
So, that's why we set it up. Also in the
Python SDK, we set it up. Have it you
have to have it running.
Then you have to have the local node
running. After then, you you test you
use the TCK SDK to run the specs along
along to run the specs along
against the JSON RPCs
against the JSON RPC server. So, that's
what we are That's what That's why we
wrote this. Cuz we we searched for that
because when you're reviewing, you have
to know that those
if the method is implemented,
you have to know that the specs are also
passing along along with our with the
TCK repo.
>> Yeah.
But when I go to TCK, where is it not?
TCK
>> There.
>> So, when I go to to this one, right? And
then let me check
>> [clears throat]
>> somewhere No,
somewhere we have those
tests and let's go Let's go to file
service
and let's say file create transaction.
So, here we have a test
that says, "Hey, is file create
transaction or multiple tests, right? Is
file create transaction supported?" And
um
if I understand you correctly, you're
now saying like in the CI of the Java or
JavaScript SDK, those tests are not
executed at all when I look at a pull
request,
the tests I see
under this one or under this one is
something totally different. Because
those are the tests
that test the TCK implementation for
that language, like the driver, and not
um all those specifications. Is it like
that?
>> Yeah.
>> Crazy.
Okay.
>> You're right. Because um yeah, to add on
what you are saying, because those
though like those
uh those TCK unit tests which are
running in the like in the Java,
they are best when they are best to see
that you have the coverage for the TCK
code that you've written. But to to know
that
I have the specs that I've written, they
are right and uh
they are being tested by the spec, you
have to run the what? The TCK. You have
to run the the compatibility test.
>> Yeah.
>> Using that using that file, because when
when when you run that you you run that
file against the what? The JSON R P
server you've set.
>> Mhm. Mhm.
>> Yeah. So So when you run it and
>> But for the one you now had, all those
tests like the one we currently see on
screen is executed now.
>> The which one?
>> The one on screen I'm sharing.
>> That one.
>> That one is
executed for Python as an example.
>> Yeah. Yeah. That one. For that one, you
That's That's how even we have been like
First of all, we first check if if
someone writes a method,
yes, it's fine, but we first check is it
passing through that because at times
even the documentation of the by the
even the documentation of that is you
got times they they they are they vary
according to the specs. So we have to
run them up to the spec and see whether
they pass and sometimes they don't and
someone has to to rewrite them those
things. So that's why we we we thought
that it would be better to have it in
the like in the in the action runners so
that we can
they can we can see in the PR that this
one is fine and when we run the the the
test all those TCK tests along
to the JSON RPC server in the SDK they
they pass.
>> Yep.
>> Yeah, so
>> Um
that is interesting.
Can you
can you show like how the result looks
like? Do we then see each and every
test? Or
>> Yeah, yeah, I'm going to let me let me
show you here.
For example
uh
Let me share. Yeah.
Can you see my screen?
>> Yeah.
>> So so for example
>> What are those categories? Like where
are those categories?
>> this category is they are those those
services that you see that you saw for
example in your opening the Let me let
me
>> Ah, okay. So you have not all services
already implemented
just some of them. Okay.
>> Yeah, so you know it's like this that
one I that one I
you can run the full suit the full test
TCK suit. But that one I opened it just
to see whether I can run one like for
example the file service, the token
service only.
The so
>> But where where was the A and B? Where
is that coming from? Like token A token
B because like
where do I see that?
Where is that configured?
>> These ones are they are here. They are
Let me show you. They are Let me
Um these ones I just configured them
here as you can see.
>> Oh, this is an source test token service
test token service minus A. Okay, token
service and then test Okay, understood
everything. So this is like air drop air
drop air drop associated.
>> Yeah, yeah, yeah. All it runs everything
>> Understood. Understood. Okay, you
configure it like that because maybe you
say like I don't want to run all I I
only want to run some of them.
>> Yeah, so here you can see you can run
the full what?
The full CI.
>> Yeah.
>> Yeah, so
uh
and here I would like
I would like to show you where
um
Now this is these are the results.
>> Nice.
>> Yeah, so it it gives you everything that
these ones are not existing. You see?
Like these ones are I uh
are pending.
You see?
And uh where is this
not
passing?
>> coming from.
>> For example, they are not implement like
uh
those methods are not implemented in the
in the in that SDK.
>> Uh in in the Python SDK.
>> Yeah, those those TCK
>> cannot run a test because that is
missing in the Python SDK.
>> Yeah.
And this pending may
may show you that
you you have them,
but you haven't
uh for example, which one is this?
Aha, that you have them in the in the
SDK, but you haven't created the method.
>> Mhm.
>> Yeah. So now this one shows you that
this one is created and it is passing.
>> Yeah, okay.
>> Yeah, so so that's how that's how
that's how the the report is.
And as you can see, these ones are
passing. This one is fully implemented.
>> Mhm.
>> Yeah, so so for example, the reason I
was writing for example, someone can say
that I want to create a method of
account update transaction
in the in the what in the TCK in the
RPC. So the in the JSON RPC, so
he writes all these what?
These
tests these test specs
and to see that they are that
the SDK is in in line with the TCK
specs, they should pass.
Mhm. And when something fails, it means
that the TCK suit that you've written
has something missing. So and it will
show you that this one is not right, so
you will go back and rewrite it. So
that's why we run them to implement
perfect TCK
TCK tests.
>> Interesting.
>> Yeah.
>> That's really interesting. How How long
is the one taking? Like a full one, like
this full test?
>> Uh
>> Uh a full test a full test suit
uh a full test suit uh
it can take
like like a suit only can take 10
minutes.
>> Mhm.
>> But if you have that you have to prepare
the solo what and what so it's like a
minimum of 16 minutes.
>> Okay, but that is for all the tests.
>> Yeah, for all the test.
>> Yeah. So that is totally doable. I mean
you need to wait like 15 minutes before
you can merge your PR
but then you know that
um
that the um TCK spec is completely
fulfilled.
>> Yeah, that is right.
>> Yeah.
>> Uh
>> So and um how you have created it how
much of it is um
generic so that it can be used by each
and every SDK?
>> Um for the current what we are what we
have now we have tested it
for the Java and for the Python. So when
there are some specs that there are some
functionalities that we are fixing but
when they are done then we shall go and
test it to every what and putting the
the specs for the for each and every
SDK. So now when it is done then we
shall say that this the
that the for example the Swift SDK can
use it and the C++
yeah.
>> Can you can you show that like the
um
part that is
re- re-usable?
>> Let me show you here where it is.
Um
Uh so uh this is what we have.
Uh
So, what we have What we have as you see
the Docker files, we have all of them
for the Python and the Java. So, when I
come to the Python, it will show me that
it it will set up the what?
The JSON RPC server for the what? For
the Python SDK. So, this is what we only
need for the SDK. So, when we have the
this JSON RPC server running,
then the rest are uh configurable to
each and every SDK. Just we just have to
write the the the Docker file to run the
JSON RPC server of a specific what? SDK.
When it is done, all specs are the same.
>> Mhm.
Um
So, in general, this is like And if you
go one back,
one folder up,
there was a generic
um
>> [snorts]
>> action.
>> This one, yeah?
>> Yeah.
>> Yeah, this one.
That's what we are still working on.
And also how we present the the what?
The report. I had something here. Let me
show you.
Uh for example,
where is it? Where is it?
Um
I had something here.
Let me see.
Is it No, it's not.
Is it this?
No.
Yeah.
Ah, now I remember. I have it on my
local machine.
Um
where is it? Where is it?
I'm done with this.
Yeah.
So now
This is this kind of like
generic
HTML file that can be rendered to you
everything that this one is pending this
everything so
That can be optional you can like an SDK
can work it another one can not so you
just also adding that to see.
But you can see.
Shows you the full report of that
specific what? Specific method.
>> Mhm.
Why why is it not under highway hackers?
>> Uh
we are going to take it there. It was
our next step after this PR is merged.
>> Okay, perfect. Good.
So for next week we will have it on on
highway hackers and then on next week
no maybe in two weeks so which will be
because I assume next week maybe there
is not even a TSC but in two weeks so on
the 22nd
um
you will present that to the TSC.
>> Okay, may I have my niche?
>> Yeah yeah yeah yeah yeah yeah.
>> Okay.
>> So we should bring it to to highway
hackers and and bring it in like two or
three SDKs. This is awesome.
>> Yeah.
>> And and when have you talked with Rob
about that?
>> Uh Rob is like I've taken like Rob is
not responsive but the the last time we
talked if he was introducing this and by
then he was teaching us how to run them
against the SDKs.
So after that
well, he I think he switched priorities.
So,
>> Yeah, yeah. Yeah, yeah.
Okay, but like when you say like was it
a month ago, 3 months ago?
>> It was in May.
>> Okay.
Yeah. Okay. So, in May, you looked at it
and and now, yeah, okay, interesting.
[clears throat]
Yeah, good to know.
>> Yeah, cuz cuz that's how we have been
reviewing cuz you you like when you see
like someone is implementing a method
uh to in order to run those, uh you have
to pull that branch, you run it on your
local machine, and you run you you you
fire up that solo.
You run those DC get tests on your what?
On your local machine to see whether
they are passing. So, that's that that
flow
it couldn't be like very okay to the to
the maintainers or reviewers.
>> That's cool.
>> Yeah.
>> Absolutely. So,
Yeah, continue it. We should bring that
that to I want to have that as a
a Hiway project.
Um
as a proposal to not even be in Hiway
Hackers, but to be a full
Hiway project.
>> Okay.
Yeah,
we're going We're going to see how to
perfect like We're going to see just to
to remove there are some issues that we
have been facing because uh the first
run the the first time
we had to go through the documentation,
so it ran like for 40 minutes.
>> [laughter]
>> So, after Yeah, so after we fixed some
stuff, now it runs for 15 minutes. So,
we are fixing some other stuff. So, when
once they are done then once that once
this PR is merged we are going to
I'm going I'm going to talk to Jessica
so that we put it to the higher hackers.
After that then we shall we shall be
good to go.
>> Yep, perfect.
>> Yeah.
>> Cool.
>> And another thing
I think the webs the
the web redesign
we shall have the 70% covered at the end
of this week.
>> Excuse me, about what?
>> The website redesign.
>> Oh.
>> Yeah.
>> That is cool. I mean, this is not part
of of this meeting but we extended the
time anyway of this meeting already.
Um oh no, this is a 45-minute meeting.
>> Yeah, it's there.
>> What
So when you say like that, what does
that mean?
Um
>> Uh it means that uh
for example our home page there is a PR
for PR for the home page and when it is
merged I think the full the full the
full home page will be done. And
uh Angie is working and also she has a
PR for the issue issue what? Issue page.
And once it's that is merged we we shall
we shall that will be also done. Uh what
is like
remaining there is the TSC but the TSC
is fine just we have a binary design and
some color some color effects that we
want to change there.
And also there will be only one thing
remaining. That will be the blog page.
So that will be the
the work for next week.
>> Cool.
>> Yeah. So after next week I think we
shall be like
fully done to present it.
>> Sounds good.
I like it.
We like that. That's cool.
>> Yeah.
I know about the SDKs at least now we
are doing well with uh
with
uh OpenSSF scorecard.
Just one thing that I want to put that I
would
would be a concern is that
the there is a deprecation for Is it
account balance query?
Am I right?
Jesse?
>> Jesse's not here.
>> Angie, am I right about that?
I know.
Is it the account balance query?
>> Yeah, the account balance query is being
deprecated. I am working on the PR for
it right now.
>> Yeah, but the uh some SDKs it is going
to be deprecated on 9th, but some SDKs
they are
they are forgotten.
>> Mhm.
In in what SDKs is it done?
>> Um I believe it's done Give me 1 second.
I know it's done for
Java.
>> And there is a PR for for for that in
JS.
>> Yeah, and then I will have a PR for it
in Python shortly.
>> Okay. Okay.
>> But
>> And can somebody in all the others
maybe whistle link to the
um
pull request for Java and maybe I mean
if it's duplicated I hope there is
something in the SDK hub about it.
Um whistle link to that create issues in
the other SDKs.
>> Yeah, I think I think I'm going to do
that. I'm going to create
uh some issue I'm going to create that
issue in the
in the Swift and also the C++ but when
when I'll create in the Swift cuz
But I Angie has that Angie issues. I
think she can create that.
>> Okay.
>> Yes, Keith has something currently in
the SDK collaboration hub
um regarding updating the mirror node
account balance query proposal. So, it's
not merged yet. So, I'm guessing it's
something he's still working on. But
because we're coming up so close to the
9th uh we felt better just having
something submitted for now and then if
there are any changes to it after
Keith's PR is merged then we'll make the
changes accordingly.
>> Give me a second. So,
>> Uh his PR in the SDK collaboration hub
is uh 282.
>> Uh now I know where this is coming from.
Um
Maybe I will support on that.
Yeah.
I'm I'm the blocker on that. So, if you
because I said it it must be done in a
in a kind of
different area. And if you look at 283,
you see um
that based on discussions I had
um
when I
reviewed the thing in Java and so on, I
said we need a more specific HTTP API.
>> I
um
And with that,
um
they started to to work on it. You see
guy on on um
283,
that
I commented a lot of it. And my last
message is that I said, "Yeah, yeah, and
I already did that for the V3s pack,
where all of that has
already been done, which don't help us
at all here. Um But, yeah, that was that
I said, "Yeah, that This is not the way
how it should be done." Um
So, I assume I I was the troublemaker at
that point.
>> No.
>> Okay.
>> How dare you? No, I'm just kidding.
>> [clears throat]
>> Uh and the question is when when you do
it, I mean
having something temporary would be
fine, but even for the other ST case,
it would make totally sense to
think about how HTTP request should be
done because so far we had everything
GRPC, and now we have some codes to
mirror node that use HTTP. And um
For that, several other things need to
be concerned and and need to to be
re-synced.
Um
You will see it when you look at my my
comments um what I'm thinking about.
>> [snorts]
>> That's that's why I think more
investment is is needed here. What I
don't know is how that affects
any things that should be deprecated
in two days. I had no idea about that
timeline. Where's that timeline defined?
>> I believe the timeline is actually
defined in one of the Discord channels.
Uh there were a couple of people from
Hedera posting about it and then there
have been frequent posts more or less
just reminding everyone that it the
deprecation will go into effect by the
9th.
>> Mhm, okay.
>> Uh most if I think a few of the SDKs um
and Daniel said they're aware Java being
one of them. I don't know if all the
SDKs will necessarily have it done by
the 9th, but a few of them should.
>> Mhm, okay.
Interesting.
Good.
>> So uh I think Andy you're going to help
us undo that. Then uh I think I'll work
on that in the Swift
and place the PR there.
>> Yep, I'll have the PR for Python coming
up shortly. I'm just working through it
right now.
>> Uh yeah, okay. So you you help me create
those issues in the C++ and the
and uh what?
And the Swift
Oh, by the way, uh
is also the
Rust SDK
being worked on on that.
>> And yeah, I think Rob is actually coming
back for C++. So, I can reach out to him
and see if that's on his to-do list.
But, from what I understand, uh his
priorities should have shifted back to
C++, so he should be around a little bit
more.
But, I can confirm with him.
>> I said, "Okay, create create I think you
create for the Rust, the C++, and the
Swift SDK."
Those that issue then
we'll see how to do that.
>> Would it be possible, Angie, once it's
done to write a blog post about it?
That we now have a
patent method and and a replacement for
it.
I believe that would make sense.
>> Mhm. I can put something up on the
website for it. That's fine.
>> Awesome.
That's
That's great.
>> Yeah.
>> Such a great team. Thank you all.
Cool.
>> Um
I see our score is excellent at the LFX
insights, so we are not bad.
>> That's good. That's good.
>> We have a health score of excellent. We
don't have any
vulnerabilities.
Uh
yeah.
I our maintainer our maintainer health
is 37 out of 40, so.
Yeah, not as bad.
>> Nice. Nice. Nice. Nice.
Cool.
So.
Thank you all.
And then see you.
Tomorrow in other meetings, right?
>> Yeah.
>> Okay.
>> Bye-bye.
>> Bye.
>> Bye. Have a good one.
>> Bye.
>> Mhm.