Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

πŸ™ Your most needed features ?πŸ’‘ #1386

Open
sbernard31 opened this issue Jan 24, 2023 · 20 comments
Open

πŸ™ Your most needed features ?πŸ’‘ #1386

sbernard31 opened this issue Jan 24, 2023 · 20 comments
Labels
discussion Discussion about anything

Comments

@sbernard31
Copy link
Contributor

Hi all,

@JaroslawLegierski would like to propose some student projects based on Leshan which could be part of Msc / Eng thesis. πŸ‘¨β€πŸŽ“

We would like to take this opportunity to try do something useful for Leshan and its community.
So we create this brainstorming discussion aiming to collect any ideas πŸ’‘ about feature/tools that are missing around Leshan :

  • What is currently missing in Leshan ?
  • What would you like to change ?
  • What new feature do you need ?
  • Any tools missing around LWM2M when using Leshan ?

Anything which could be directly included in Leshan or new project based on it.

Do not hesitate to share ideas even if you think this does not perfectly match for a student project. This is brainstorming ! πŸ™‚
And even if some ideas will not fit for student projects, it may be used to improve Leshan anyway.

@sbernard31 sbernard31 added the discussion Discussion about anything label Jan 24, 2023
@sbernard31 sbernard31 pinned this issue Jan 24, 2023
@sbernard31 sbernard31 changed the title πŸ™ Leshan's the most needed new featuresπŸ’‘ πŸ™ Your most needed features ?πŸ’‘ Jan 24, 2023
@jvermillard
Copy link
Contributor

in leshan demo r/w/o at the object level (we only have it at instance level)

@sbernard31
Copy link
Contributor Author

Maybe some works around Interoperability tests.

  • This could just be about adding interoperability tests in Leshan.
  • OR maybe more about a new project where anyone could contribute its LWM2M implementation to pass interoperability tests all together.

There is some discussion about that at Wakaama repository : eclipse-wakaama/wakaama#617

Note that currently Wakaama seems not so active anymore... so maybe we should first identify against what we can do this interoperability tests... 😁

@sbernard31
Copy link
Contributor Author

By the past, I implemented a kind of "LWM2M client simulator" based on Leshan : https://github.com/sbernard31/benchmark-clients.

I know that currently @jvermillard used it. But maybe it should be improved ? 🀷

@sbernard31
Copy link
Contributor Author

I guess a common use case for LWM2M developer is to write tests. (either to tests client or server implementation)
Maybe, we could create/provide a component with an API oriented for tests ? (not sure it makes sense πŸ€” )

@sbernard31
Copy link
Contributor Author

sbernard31 commented Jan 26, 2023

Maybe out of scope but for now we have not so much documentation.
And the documentation is stored in wiki.
That was fine when we had only 1 version and so only 1 API.
But with future release, I think we should find another way to manage documentation.

@jvermillard
Copy link
Contributor

By the past, I implemented a kind of "LWM2M client simulator" based on Leshan : https://github.com/sbernard31/benchmark-clients.

I know that currently @jvermillard used it. But maybe it should be improved ? shrug

Would be cool to make it a first class module in the project with a server counter part so we can easily start and get baseline values quickly

@JaroslawLegierski
Copy link
Contributor

We have one more idea from @Warmek. For MQTT protocol we can find in Internet MQTT clients with graphical user interface such as mqtt-explorer maybe good idea would be to add GUI to leshan-client-demo ? (or create LwM2M client with GUI based on Leshan).

@jvermillard
Copy link
Contributor

Another idea: integrate a fuzz testing solution, like: https://google.github.io/oss-fuzz/

@eabase
Copy link

eabase commented Feb 24, 2023

DTLS 1.2 was officially released 2012.
DTLS 1.3 was officially released 2022.

Maybe time to update and future proof.
The list of advantages of DTLS 1.3 over 1.2 is huge and important, in particular in regard to security and power saving.

So fully supporting LwM2M 1.2 is an absolutely minimal expectation.

@Sylphe88
Copy link

We do have a need in the coming weeks/months around EST and the fact that long thread #1135 was stale made us sad when we decided to settle for LwM2M with Leshan!

@JaroslawLegierski
Copy link
Contributor

JaroslawLegierski commented Apr 13, 2023

By the past, I implemented a kind of "LWM2M client simulator" based on Leshan : https://github.com/sbernard31/benchmark-clients.

I know that currently @jvermillard used it. But maybe it should be improved ? 🀷

Maybe we can develop this tool in and implement as a plugin for Apache Jmeter ?

@sbernard31
Copy link
Contributor Author

sbernard31 commented Apr 13, 2023

I vaguely remember that @msangoi tried to implement a Jmeter plugin by the past but If I remember well he doesn't reuse Leshan but Californium directly.

It exists a lwm2m-jmeter project and they did same choice.

So not sure Leshan client is really adapted/ready to do that 🀷 but maybe this is related to #1386 (comment)

@JaroslawLegierski
Copy link
Contributor

I vaguely remember that @msangoi tried to implement a Jmeter plugin by the past but If I remember well he doesn't reuse Leshan but Californium directly.

It exists a lwm2m-jmeter project and they did same choice.

If there is already exitst a plugin for JMeter then it doesn't make sense to create next one such project

So not sure Leshan client is really adapted/ready to do that 🀷 but maybe this is related to #1386 (comment)

When it comes to API based test tool are you thinking of something like this:

Leshan_API_based_test_tool
?

@sbernard31
Copy link
Contributor Author

When it comes to API based test tool are you thinking of something like this:

Nope.
I was thinking about an oriented test Java API which could be easily used in automatic tests.
A more low level API than current one which could be used to write tests.
E.g. If you want to test a LWM2M server maybe you need this kind of API :

response = clientTest.register(... .. )
assertThat(response).is... ... ;

response = clientTest.update(... ... )
assertThat(response).is... ... ;

coapResponse = clientTest.send(aMalformedCoapRequest) // to test server behavior
... ...

clientTest.onRequest(new ReadRequest()).return(new ReadResponse( ....));

I didn't think too much about it, so this is clearly not a specification but more example to try to share the idea.
Maybe If you want to discus more about this we should create a dedicate issue ?

(Note that: I don't think reusing demo for real automatic test is a good idea, even if I know that some people do that)

@jakubsobolewskisag
Copy link
Contributor

I'd love to see SNI support both in Server and in the Client.

This was referenced May 12, 2023
@sbernard31 sbernard31 unpinned this issue Jul 17, 2023
@Nick-The-Uncharted
Copy link

Nick-The-Uncharted commented Mar 1, 2024

During performance test, we surely need something like access-log to easily figure out problems.
Some problems I have met so far:

  1. Frequent gc leading to registration update time out. (our elb can only keep udp session for 10s, time out means offline).
  2. We send msg to kafka synchronously, and one day kakfa has heavy load so it response slow (5ms), which leading to CoapServer thread blocked and unable to process registration update in time.

If I am able to provide a UplinkRequestReceiver of my own, access log can be easily implemented.

@sbernard31
Copy link
Contributor Author

@Nick-The-Uncharted maybe this could help : #696

If this doesn't help or you think we can do better (like making possible to create custom UplinkRequestReceiver please create a dedicated issue and we will talk about it.

@Nick-The-Uncharted
Copy link

@Nick-The-Uncharted maybe this could help : #696

If this doesn't help or you think we can do better (like making possible to create custom UplinkRequestReceiver please create a dedicated issue and we will talk about it.

Thank you for reply, I think I can use a ip->request cache to calcuate the duration of request handling.

@Nick-The-Uncharted
Copy link

Nick-The-Uncharted commented Apr 10, 2024

@sbernard31 org.eclipse.californium.core.network.interceptors.MessageInterceptor#sendResponse don't have exchange as parameter, makes it really hard to find out the corresponding request.

If we use a ip->request cache and want to filter some request out (eg. register update request), this becames impossible to log request time.

@sbernard31
Copy link
Contributor Author

@Nick-The-Uncharted like I said at #1386 (comment), please if you want to talk about a particular issue. Create a new one or use an already dedicated existing one.
(This issue is just to identify most needed feature not to discuss about it)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Discussion about anything
Projects
None yet
Development

No branches or pull requests

7 participants