fix: regtest deployment scripts also should include pool creation to allow testing

Let's agree to the exact details of the pools to be created. I have the following:

CRP: (yield-usda-4380, wbtc)
YTP: (yield-usda-4380, usda)
FWP: (usda, wbtc)

@hecool108 @hyossid anything else we want (for testing)?

@fiftyeightandeight Ok so there will eventually be multiple different type of pools, not just one pool holding all the assets.

@fiftyeightandeight Ok so there will eventually be multiple different type of pools, not just one pool holding all the assets.

Correct

@JBotwina we will also need to create pool-token contracts for the relevant pools.

Pool Creating Script should be independent from deployment script. Notice that creating pool is just for easy testing purpose.
For the testnet, We are going to use the following pool;
CRP: (yield-usda-59760, wbtc)
YTP: (yield-usda-59760, usda)
FWP: (usda, wbtc)
where 59760 block height represents the 10-27-2021 12:00am HKT, a month after the testnet launch.
relevant contracts are all deployed, so I think @JBotwina can work on creating an independent script which creates the relevant pool.
Keep in mind that FWP should be created prior to CRP

We will need to create relevant token contracts. For example, pool-token-yield-usda-4380-usda.
@hyossid do you think you can create contracts, so @JBotwina can use them for pool creation?

I'll working on creating the contracts now. Will deploy in the following order:

FWP: (usda, wbtc)
CRP: (yield-usda-59760, wbtc)
YTP: (yield-usda-59760, usda)

@JBotwina we need to have/create the following contracts. Also, I would like @hecool108 to take the lead on creating testing environment set-up script.
So to summarise,

@JBotwina is responsible for deployment script. @hecool108 is responsible for test environment set-up script.
Contract developers are responsible for creating the required contracts for front-end testing.

tokens

wbtc
usda

yield-tokens

yield-wbtc-59760
yield-wbtc-79760

key-tokens

key-wbtc-59760-usda
key-wbtc-79760-usda

pool-tokens

fwp-wbtc-usda
ytp-yield-wbtc-59760-wbtc
ytp-yield-wbtc-79760-wbtc

FWP

create-pool wbtc usda u50000000 u50000000 fwp-wbtc-usda

CRP

create-pool wbtc usda yield-wbtc-59760 key-wbtc-59760-usda
create-pool wbtc usda yield-wbtc-79760 key-wbtc-79760-usda

YTP

create-pool yield-wbtc-59760 wbtc ytp-yield-wbtc-59760-wbtc
create-pool yield-wbtc-79760 wbtc ytp-yield-wbtc-79760-wbtc

@hecool108 I will incorporate the above into the UX/UI development plan. Please note we will need to create more contracts to test margin trading - let's do that after we are done with lend/borrow.

I created a node app here, https://github.com/alexgo-io/alex-v1/tree/env-test/init-js-tool
It can:
1 update oracle price via CoinGecko API (tested)
2 create FWP/CRP/YTP pool. (tested)
https://www.loom.com/share/ca8790978cbf40d08f8ee91363cc7447?from_recorder=1&focus_title=1
Still missing contracts:
yield-wbtc-79760
key-wbtc-79760-usda
ytp-yield-wbtc-79760-wbtc

@hecool108 I think we are not going to use the 79760s for regtest.

@JBotwina we also need to create the following multisig:

multisig-fwp-wbtc-usda-50-50
multisig-crp-wbtc-usda-59760
multisig-crp-wbtc-usda-79760
multisig-ytp-yield-wbtc-59760-wbtc
multisig-ytp-yield-wbtc-79760-wbtc

https://www.loom.com/share/a19b57dd0964427bb8d19a09dd007636


Shape bug

Possible bug from a user was that the shape selection for the nodes gets reset every time he clicks and selects any node.

Doesn't replicate in Dev or Prod. Gonna have to see it, if possible.


Integration with docker

We are using BBB with the docker script. Unfortunately I cannot simply add the files there.
Please try to integrate it in the docker script.

Hi @mokkin,
Thank you for your suggestion - I wasn't aware of this docker installation. It certainly is a must-have once the script is done.

@mokkin Hi,
I have BBB 2.3 installed with docker (bbb-install-script) and it is no problem to copy the *.rb files ind the mentioned folder.

Hi Daniël,
I have a BBB 2.3 docker install, same as @mokkin and @blu-IT mentioned. I just copied the two ruby scripts into the mentioned folders and made them executable. No further tweaking. Yet no luck with my first conversion trial... (Please look at the very extensive message below).
Any suggestions?
Regards,
Peter
root@meetings:/usr/local/bigbluebutton/core/scripts/post_publish# ./export_presentation.rb -m 525ded7cc26438f85b01b0597a0202d25980638d-1625158099592
sh: 1: Inwinteren - ZwarteBij.org: not found
An error occurred rendering the video.
root@meetings:/usr/local/bigbluebutton/core/scripts/post_publish# ffmpeg version 4.2.4-1ubuntu0.1bbb2~18.04 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/usr --extra-version='1ubuntu0.1bbb2~18.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopus --enable-librsvg --enable-librubberband --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libxml2 --enable-sdl2 --disable-decoders --enable-decoder='aac,ass,bmp,ffv1,ffvhuff,flac,flashsv,flashsv2,flv,gif,h264,huffyuv,libopus,librsvg,libspeex,mjpeg,mp3float,mpeg2video,opus,pcm_f32le,pcm_s16le,pcm_s16le_planar,png,rawvideo,srt,ssa,subrip,vorbis,vp6,vp6a,vp6f,vp8,vp9,webp,webvtt' --disable-encoders --enable-encoder='aac,ass,bmp,ffv1,ffvhuff,flac,flashsv,flashsv2,flv,gif,h264_vaapi,huffyuv,libmp3lame,libopus,libspeex,libvorbis,libvpx_vp8,libvpx_vp9,libx264,libx264rgb,mjpeg,mjpeg_vaapi,mpeg2_vaapi,mpeg2video,pcm_f32le,pcm_s16le,pcm_s16le_planar,png,rawvideo,srt,ssa,subrip,vp8_vaapi,vp9_vaapi,webvtt' --disable-hwaccels --enable-hwaccel='h264_vaapi,h264_vdpau,mjpeg_vaapi,mpeg2_vaapi,mpeg2_vdpau,vp8_vaapi,vp9_vaapi' --disable-parsers --enable-parser='aac,bmp,flac,gif,h264,mjpeg,mpegaudio,mpegvideo,opus,png,vorbis,vp8,vp9' --disable-demuxers --enable-demuxer='aac,alsa,ass,avi,bmp_pipe,caf,concat,dash,ffmetadata,flac,flv,gif,gif_pipe,h264,hls,image2,image2pipe,ivf,jpeg_pipe,kmsgrab,lavfi,matroska,mjpeg,mov,mp3,mpegts,mpegtsraw,nut,ogg,pcm_f32le,pcm_s16le,png_pipe,pulse,rawvideo,rtp,rtsp,srt,swf,w64,wav,webvtt,yuv4mpegpipe' --disable-muxers --enable-muxer='adts,ass,avi,caf,dash,ffmetadata,flac,flv,framecrc,framehash,framemd5,gif,h264,hash,hls,image2,image2pipe,ipod,ivf,matroska,matroska_audio,md5,mjpeg,mkvtimestamp_v2,mov,mp3,mp4,mpeg2video,mpegts,nut,oga,ogg,ogv,opus,pcm_f32le,pcm_s16le,rawvideo,rtp,rtp_mpegts,rtsp,segment,singlejpeg,srt,stream_segment,swf,tee,uncodedframecrc,w64,wav,webm,webm_chunk,webm_dash_manifest,webvtt,yuv4mpegpipe' --disable-protocols --enable-protocol='async,cache,concat,data,file,hls,http,httpproxy,https,icecast,md5,pipe,rtmp,rtmps,rtmpt,rtmpts,rtp,subfile,tcp,tee,tls,udp,unix' --disable-bsfs --enable-bsf='aac_adtstoasc,chomp,filter_units,h264_metadata,h264_mp4toannexb,h264_redundant_pps,mjpeg2jpeg,mpeg2_metadata,noise,null,vp9_metadata,vp9_raw_reorder,vp9_superframe,vp9_superframe_split' --disable-indevs --enable-indev='alsa,lavfi,v4l2,fbdev,xcbgrab,kmsgrab' --disable-outdevs --enable-outdev='alsa,sdl2,xv,fbdev,v4l2' --disable-libdc1394 --enable-libdrm --disable-libiec61883 --disable-chromaprint --disable-frei0r --enable-libx264 --enable-shared
libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libavresample   4.  0.  0 /  4.  0.  0
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100
libpostproc    55.  5.100 / 55.  5.100
Trailing options were found on the commandline.
Input #0, lavfi, from 'color=c=white:s=1920x1080':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
Input #1, concat, from '/var/bigbluebutton/published/presentation/525ded7cc26438f85b01b0597a0202d25980638d-1625158099592/timestamps/whiteboard_timestamps':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #1:0: Video: svg, bgra, 1600x1080, 25 tbr, 25 tbn, 25 tbc
Input #2, image2, from '/var/bigbluebutton/published/presentation/525ded7cc26438f85b01b0597a0202d25980638d-1625158099592/cursor/cursor.svg':
Duration: 00:00:00.10, start: 0.000000, bitrate: 5 kb/s
Stream #2:0: Video: svg, bgra, 16x16, 10 fps, 10 tbr, 10 tbn, 10 tbc
Input #3, image2, from '/var/bigbluebutton/published/presentation/525ded7cc26438f85b01b0597a0202d25980638d-1625158099592/chats/chat.svg':
Duration: 00:00:01.00, start: 0.000000, bitrate: 43 kb/s
Stream #3:0: Video: svg, bgra, 8000x32760, 1 fps, 1 tbr, 1 tbn, 1 tbc
Input #4, matroska,webm, from '/var/bigbluebutton/published/presentation/525ded7cc26438f85b01b0597a0202d25980638d-1625158099592/video/webcams.webm':
Metadata:
COMPATIBLE_BRANDS: isomiso2avc1mp41
creation_time   : 2021-07-01T19:46:08.000000Z
MAJOR_BRAND     : isom
MINOR_VERSION   : 512
ENCODER         : Lavf58.29.100
Duration: 01:51:48.14, start: 0.000000, bitrate: 229 kb/s
Stream #4:0: Video: vp9 (Profile 0), yuv420p(tv), 640x480, SAR 1:1 DAR 4:3, 15 fps, 15 tbr, 1k tbn, 1k tbc (default)
Metadata:
HANDLER_NAME    : VideoHandler
ENCODER         : Lavc58.54.100 libvpx-vp9
DURATION        : 01:51:48.137000000
Stream #4:1: Audio: vorbis, 48000 Hz, stereo, fltp
Metadata:
ENCODER         : Lavc58.54.100 libvorbis
DURATION        : 01:51:48.073000000
Input #5, matroska,webm, from '/var/bigbluebutton/published/presentation/525ded7cc26438f85b01b0597a0202d25980638d-1625158099592/deskshare/deskshare.webm':
Metadata:
COMPATIBLE_BRANDS: isomiso2avc1mp41
creation_time   : 2021-07-01T19:53:10.000000Z
MAJOR_BRAND     : isom
MINOR_VERSION   : 512
ENCODER         : Lavf58.29.100
Duration: 01:51:48.20, start: 0.000000, bitrate: 176 kb/s
Stream #5:0: Video: vp9 (Profile 0), yuv420p(tv), 1280x720, SAR 1:1 DAR 16:9, 5 fps, 5 tbr, 1k tbn, 1k tbc (default)
Metadata:
HANDLER_NAME    : VideoHandler
ENCODER         : Lavc58.54.100 libvpx-vp9
DURATION        : 01:51:48.200000000
Filter overlay has an unconnected output

Hi @danielpetri1
I unzipped the code and copied the files to the indicated folders. How can anything go wrong with that? Yet I will try to double-check.
"Inwinteren - ZwarteBij.org" is the title of a lecture, and this is the link: https://meetings.competency.nl/playback/presentation/2.3/525ded7cc26438f85b01b0597a0202d25980638d-1625158099592
Thank you very much for your help! I really appriciate that!
Regards,
Peter

@RPHr5TyZ Bedankt! I could reproduce the problem, the "-" in the title of the lecture was making the  video renderer think it's a new command. Escaping it made it work.
Here's your video file: https://we.tl/t-FLvadiDqUM
Let me know when you got it and I'll delete the link then.

@danielpetri1
Great! I downloaded the file and watched for a few seconds. Looks promising! You can delete the link.
Sleep well!

Closing since it is compatible with the Docker install.

@danielpetri1

...
I'll push the fixed code soon after some more tests.
...

Any indication when?
Best regards,
Peter

@RPHr5TyZ change line 591 to the following:
render << "-metadata title=\"#{meeting_name}\" #{BENCHMARK}<EMAIL_ADDRESS>And make rendering quicker by setting
CHAT_CANVAS_WIDTH = 640

@danielpetri1
I'll give it a try. Many thanks!!

@danielpetri1
I'll give it a try. Many thanks!!

@danielpetri1
Code change successful!


Update person:name doc to cover situations where only person:aliases exists

https://help.securityforcemonitor.org/en/datamodel/persons.html#person_name
Where we only have a value for person:aliases this should be recorded in person:name until information about their real name emerges.
@tonysecurityforcemonitor any issues with that?

Nope that's correct - if we only have 1 value as a name for a person that should go in 'person:name' until we have more than one value


For custom provider, ALPN extension cannot be enabled in devices below android api 29.

We currently use a custom Provider, and support devices lower than Android API 29 to use TLS1.3, but during testing, we found that devices lower than Android API 29 cannot use HTTP2.0 protocol, and subsequent debugging found that AndroidPlatform restricts the SSLSocket class. SSLSocket must be the com.android.org.conscrypt.OpenSSLSocketImpl class to allow the configureTlsExtensions implementation to be executed.
Can someone tell why there is such a restriction?
  override fun configureTlsExtensions(
    sslSocket: SSLSocket,
    hostname: String?,
    protocols: List<Protocol>
  ) {
    // No TLS extensions if the socket class is custom.
    if (matchesSocket(sslSocket)) {
      try {
        // Enable session tickets.
        setUseSessionTickets.invoke(sslSocket, true)

        if (hostname != null) {
          // This is SSLParameters.setServerNames() in API 24+.
          setHostname.invoke(sslSocket, hostname)
        }

        // Enable ALPN.
        setAlpnProtocols.invoke(
            sslSocket,
            Platform.concatLengthPrefixed(protocols)
        )
      } catch (e: IllegalAccessException) {
        throw AssertionError(e)
      } catch (e: InvocationTargetException) {
        throw AssertionError(e)
      }
    }
  }

Calling functions reflectively is dangerous and I'm reluctant to do it, even if it's present in the API.

I think the feature request is, ‘recommended way to enable TLSv1.3 on older Android devices’ right?

I think the feature request is, ‘recommended way to enable TLSv1.3 on older Android devices’ right?

maybe 'enable TLSv1.3+HTTP2.0(ALPN Extension) on below Android 10 devices for custom Provider'

Is this a publicly documented Provider? If you use Conscrypt this should work.
Which version of OkHttp are you running against?  The current implementation supports providers via SocketAdaptors, so the different forms of Conscrypt can work.
https://github.com/square/okhttp/blob/okhttp_4.10.x/okhttp/src/main/kotlin/okhttp3/internal/platform/AndroidPlatform.kt#L46

Is this a publicly documented Provider? If you use Conscrypt this should work.
Which version of OkHttp are you running against? The current implementation supports providers via SocketAdaptors, so the different forms of Conscrypt can work.
https://github.com/square/okhttp/blob/okhttp_4.10.x/okhttp/src/main/kotlin/okhttp3/internal/platform/AndroidPlatform.kt#L46
I'm with @swankjesse here, we don't want public API for this, as it will be hard to support clients that change this. There is an internal API to reset the Platform, but this can be changed at any moment, so I would advise against using it.
    fun resetForTests(platform: Platform = findPlatform()) {
      this.platform = platform
    }

The SSLSocket type restriction is from okhttp-3.13, we are not using ConscryptProvider, but a custom implemented Provider. We found that even devices below Android 10 can support HTTP2 using the system's SSLSocket, but the custom SSLSocket that supports ALPN cannot use HTTP2 because it is not android system SSLSocket class.

Restriction starts with the following commit
Restore support for custom trust managers on Android

3.x is unmaintained, so we wouldn't make any changes on that branch.
You may find it easiest to fork 3.x and make the changes you need.

@swankjesse this code frequently changes so it's terrible public API. If we ever decided to support this, then DeferredSocketAdapter.Factory is probably the API. Making Platform, effectively public API would be even worse.
  interface Factory {
    fun matchesSocket(sslSocket: SSLSocket): Boolean
    fun create(sslSocket: SSLSocket): SocketAdapter
  }

I think the feature request is, ‘recommended way to enable TLSv1.3 on older Android devices’ right?

maybe 'enable TLSv1.3+HTTP2.0(ALPN Extension) on below Android 10 devices for custom Provider'

Is the custom Provider just to support TLSv1.3+HTTP2.0? If so, you can do this with the ProviderInstaller, or bundling Conscrypt.

I think the feature request is, ‘recommended way to enable TLSv1.3 on older Android devices’ right?

maybe 'enable TLSv1.3+HTTP2.0(ALPN Extension) on below Android 10 devices for custom Provider'

Is the custom Provider just to support TLSv1.3+HTTP2.0? If so, you can do this with the ProviderInstaller, or bundling Conscrypt.
If it's more than this, then it could help understand the relevance and importance of your specific Custom Provider.

Sorry, We must use the custom Provider, and wo found there are many Platforms that adapt to different Providers in the source code. In fact, we also want to implement our custom Platform to support custom Provider, This can eliminate the need to use reflection. But Platform is an internal implementation.

Agreed that Platform won't work as a public API.
@love-ginger could you expand on what your needs are? I like learning what problem people are trying to solve when considering potential solutions!

At least a non-system SSLSocket can enable ALPN in configureTlsExtensions function.

@swankjesse a minimal API for this would be to allow something like
Platform.get().registerSocketAdapter(sa)
And make this public API?
interface SocketAdapter {
  fun isSupported(): Boolean
  fun trustManager(sslSocketFactory: SSLSocketFactory): X509TrustManager? = null
  fun matchesSocket(sslSocket: SSLSocket): Boolean
  fun matchesSocketFactory(sslSocketFactory: SSLSocketFactory): Boolean = false

  fun configureTlsExtensions(
    sslSocket: SSLSocket,
    hostname: String?,
    protocols: List<Protocol>
  )

  fun getSelectedProtocol(sslSocket: SSLSocket): String?
}

@swankjesse I don't think the payoff is there for opening up Platform, but without that or this above, we are gatekeepers for supporting new Providers.  Like Amazon Corretto for JVM instead of Android, which we added because I expected some people to be running production workloads on it.  I'm not convinced a public registerSocketAdapter is wise, but can see the argument.

Yeah I’d prefer we live by the API limitations of the Java sockets APIs. We do limited ‘progressive enhancement’ when we have a very well known implementation via Platform internals, but I don't think it's appropriate for us to open up this as a user API.
One example we aught to confirm we can handle: HTTP/2 + TLSv1.3 on older devices that have the Google Play Services location provider installed. That could be out recommended configuration for people with @love-ginger’s general needs. (Understanding that Play Services is Google’s proprietary AOSP-based product and not on all devices we target.)

@swankjesse I've tested this before, and found issues which led to the whole SocketAdapter approach.  But I can check again.
I'm going to close this one so we don't just keep discussing it without saying it.


Disabling accessibility permissions can hard-lock a machine

OS
14.2 (23C64)
LinearMouse
v0.9.5
Describe the bug
Disabling the accessibility permission while the app is in use hard-locks the machine by preventing all clicks and keypresses from all connected or to be connected input devices.
To reproduce

Disable mouse acceleration
open the settings window for accessibility
un-toggle the permission for linearmouse

Expected behavior
The app to deactivate itself, raise an error, or something that doesn't involve intercepting all attempts to undo what you just did by accident
Anything else?
No response

I attempted to use the "reset to defaults" key combination but it didn't appear to do anything. Perhaps consider adding a similar one that copletely disables it?

Thanks for your feedback.
This is a known issue. There are no notifications when the accessibility permissions have been revoked, and proactive permission checks are also ineffective. In other words, the applications are unable to detect when their permissions have been revoked. However, I've just thought about a potential workaround. Will try it later.


Feat/multi so definition

Checklist
All items have to be completed before a PR is merged

[x] Adhere to Contribution Guidelines
[ ] Updates to Decision Records considered?
[ ] Updates to documentation at DX@Scale Guide considered?
[*] Tested changes?
[*] Unit Tests new and existing passing locally?

wrong target branch


Issue with Mockery and Stream::close()

In PHP8, https://github.com/Nyholm/psr7/blob/master/src/Stream.php#L128 causes an issue with mockery:
Fatal error: Declaration of Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::close() must be compatible with Nyholm\Psr7\Stream::close(): void

Could you share the test you are running with Nyholm/psr7 to have a look at?
I wanted to see if I could reproduce this, but I do not know what code to write to do so. The test you shared is using an HttpFactory that isn‘t shipped by this library.

Sorry, I've been super busy, totally forgot about this until I got back into developing my project again.
The HttpFactory::createStream method is simply creating a Stream (see source here:  https://github.com/designcise/bitframe/blob/master/src/Factory/HttpFactory.php#L132) using Nyholm\Psr7\Factory\Psr17Factory. The problem is not there though. It is because of a return type mismatch. The error started popping up after installing PHP 8. Perhaps PHP 8.0+ has stricter type checking. Anyway, the error is as follows:
Fatal error: Declaration of Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::close() must be compatible with Nyholm\Psr7\Stream::close(): void

It happens because of return types mismatching between https://github.com/php-fig/http-message/blob/master/src/StreamInterface.php#L35 and https://github.com/Nyholm/psr7/blob/master/src/Stream.php#L128.
Perhaps you could consider strictly adhering to the return types + type hints in the PSR interfaces? Which in this case would mean you remove :void from the close() method for example. What do you think?

Actually the same problem exists in other places as well; for example:
Fatal error: Declaration of Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::getSize() must be compatible with Nyholm\Psr7\Stream::getSize(): ?int

See https://github.com/php-fig/http-message/blob/master/src/StreamInterface.php#L51 vs. https://github.com/Nyholm/psr7/blob/master/src/Stream.php#L161

What exactly is the declared return type for Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::close() or Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::getSize()?
The Nyholm/psr7 library is making use of a feature from PHP’s type system called covariance (cf. Wikipedia):

Covariance allows a child's method to return a more specific type than the return type of its parent's method.

The PSR-7 interface was written (released 2016-05-18) when return typing was not yet part of PHP (introduced in PHP 7, 2019-01-10). But as Nyholm/psr7 only supports PHP versions 7.1 and up that should not be holding it back from using return types, and thanks to covariance we can.
Could it be that Mockery does not support covariance between interfaces and implementations?

I pulled down Mockery and had another go and recreating the problem, and the following fixed it for me:
  public function testReturnsBodyWhenNotReadableButIsSeekable(): void
      {
          $stream = HttpFactory::createStream('Hello world!');
-         $mockedStream = Mockery::mock($stream, StreamInterface::class)->makePartial();
+         $mockedStream = Mockery::mock($stream)->makePartial();
          $mockedStream->shouldReceive('isSeekable')->andReturn(true);
          $mockedStream->shouldReceive('isReadable')->andReturn(false);

It looks like it might be trying to apply the StreamInterface to its own mock after having created a Nyholm/psr7 Stream compatible mock. This means it might try to overwrite the more precise void with no return type. That is the oposite of covariance and is specifically not allowed by the language.
Replacing StreamInterface::class with something like $stream::class or \Nyholm\Psr7\Stream::class seems to work as well. But leaving the second argument off from the Mockery::mock() call is probably better? Unsure, as I have never used Mockery myself.

I thought about whether this could be a Mockery specific issue, but then it doesn't explain why it only happens in PHP 8 and works totally fine up until PHP 7.4. I will try to investigate this more if I find the time, but for now, your suggestion about $stream::class should do the trick for PHP 8+. Thanks for pointing out that out, it totally slipped my mind that class name literals are allowed on objects in PHP 8+ -- that should solve my problem for now.

I thought about whether this could be a Mockery specific issue, but then it doesn't explain why it only happens in PHP 8 and works totally fine up until PHP 7.4.

For me it does not work under earlier PHP versions either. I have the following little file:
<?php declare(strict_types = 1);

require_once __DIR__ . "/vendor/autoload.php";

error_reporting(\E_ALL);
echo phpversion() . PHP_EOL;

$stream = (new \Nyholm\Psr7\Factory\Psr17Factory())->createStream('');
\Mockery::mock($stream, \Psr\Http\Message\StreamInterface::class)->makePartial();

And I ran this using the official PHP Docker images to test different versions of PHP that are supported by Mockery (php:8.0-cli, php:7.4-cli, php:7.3-cli). Outputs:
8.0.8

Fatal error: Declaration of Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::close() must be compatible with Nyholm\Psr7\Stream::close(): void in /usr/src/myapp/vendor/mockery/mockery/library/Mockery/Loader/EvalLoader.php(34) : eval()'d code on line 973

7.4.21

Fatal error: Declaration of Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::close() must be compatible with Nyholm\Psr7\Stream::close(): void in /usr/src/myapp/vendor/mockery/mockery/library/Mockery/Loader/EvalLoader.php(34) : eval()'d code on line 973

7.3.29

Fatal error: Declaration of Mockery_0_Nyholm_Psr7_Stream_Nyholm_Psr7_Stream_Psr_Http_Message_StreamInterface::close() must be compatible with Nyholm\Psr7\Stream::close(): void in /usr/src/myapp/vendor/mockery/mockery/library/Mockery/Loader/EvalLoader.php(34) : eval()'d code on line 30

I am happy to have a more indepth look myself if you can provide me with a barebones setup that works on 7.4 but has stopped working on 8.0. But as far as I can see, Mockery has never worked with this code and probably just does not support adding an interface to a mock of a class that has narrowed the return types.
Just removing the second constructor argument and running \Mockery::mock($stream)->makePartial() works for me under all the above versions.
I am going to close this issue as – at least to me – this feels very much as a Mockery issue (if it is an issue at all) and not something we have done. I see nothing actionable for us here. But feel free to continue posting your findings here, as I am interested to hear what you figure out. And if you do find something actionable on our part the issue will just be reopened :)


create a video through the api with a download_url property

I'm trying to use this library to publish some video's through a script. Basicly my code is as follows:
const jwApi = new JWPlatformAPI({ apiKey: JWPLAYER_API_KEY, apiSecret: JWPLAYER_SECRET });

const video = "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"

const jwResponse = await jwApi.videos.create({ title: 'my video', download_url: video });

As a response i get
{ jwResponse:
   { status: 'ok',
     media: { type: 'video', key: 'GTlEutz5' },
     link:
      { path: '/v1/videos/upload',
        query: [Object],
        protocol: 'http',
        address: 'upload.jwplatform.com' },
     rate_limit: { reset:<PHONE_NUMBER>, limit: 60, remaining: 59 } } }

where I did not expect to receive an upload url, I did expect that the supplied video url was used to create a jw-hosted video (cfr. https://developer.jwplayer.com/jw-platform/docs/developer-guide/management-api/uploading-videos/)
Am I using this library in a wrong way to accomplish this ?

Hi @jvanaert, thanks for reporting this, and appreciate the feedback. You are not using the library in an incorrect fashion; your use case is the intended workflow.
We will take a look at this as soon as possible and follow up shortly with a solution.

@jvanaert Thanks again for filing the issue, and sorry for the issue. We have made the fix and deployed a new version (0.0.4) to NPM.
Please let us know if you have any other feedback.

works fine now. Thanks for the quick help !


nixos-rebuild --target-host fails over ssh with --use-remote-sudo and RequestTTY=force in NIX_SSHOPTS

I've been seeing this over and over trying to rebuild multiple remote hosts – the general symptom is that it starts to copy the closure and then fails in the middle (in my experience, large store paths fail almost immediately, while smaller after a bunch of them have been copied).
A typical error looks something like this:
$ NIX_SSHOPTS="-o RequestTTY=force" nixos-rebuild switch --flake .#home --target-host home.local --use-remote-sudo
building the system configuration...
copying 56 paths...
copying path '/nix/store/12c9pivy26vxd2vh5mrgh8d532j2c3hn-udev-rules' to 'ssh://home.local'...
copying path '/nix/store/80f71myns8hgkc3cj6z2xb5d1cc54gwk-unit-prepare-kexec.service' to 'ssh://home.local'...
copying path '/nix/store/nrzy1s4nvvxxvm6v6g31jc1m5c2x7vf3-unit-pre-sleep.service' to 'ssh://home.local'...
copying path '/nix/store/px4jvh22y4jn9szk3nbkd1b1j1mmfnsy-useradd' to 'ssh://home.local'...
copying path '/nix/store/7c32rv4x5j7bp6y85yk7l2y9p7lk4aln-unit-post-resume.service' to 'ssh://home.local'...
copying path '/nix/store/6zmq0jvfdkw3hvqaakxfiv7jrxvbdyv9-unit-systemd-networkd.service' to 'ssh://home.local'...
copying path '/nix/store/73j43pwaighp5dxxj2snrp671rfc1zmn-unit-nix-gc.service' to 'ssh://home.local'...
copying path '/nix/store/am4j55fyx5cmzyjwf2v13hv0k5bzag9d-X-Restart-Triggers-sshd' to 'ssh://home.local'...
copying path '/nix/store/pg42jxac5llndzrgscpw1h119s7l025a-system-shutdown' to 'ssh://home.local'...
copying path '/nix/store/4w2k3y34h8c8bslnskz5crc2kx5svdq9-X-Restart-Triggers-reload-systemd-vconsole-setup' to 'ssh://home.local'...
copying path '/nix/store/q7aa6h7if0az71fzyzasyw8iws57rbv4-initrd-linux-6.1.73' to 'ssh://home.local'...
~^Z escape not available to multiplexed sessions
~B
~^Z escape not available to multiplexed sessions
~^Z escape not available to multiplexed sessions
~& escape not available to multiplexed sessions
~#
The following connections are open:
  NixOS/nix#1 mux-control (t16 [mux-control] r2 i0/0 o0/0 e[closed]/0 fd 5/5/-1 sock 5 cc -1 io 0x01/0x00)
  NixOS/nix#2 client-session (t4 [session] r0 i0/539024 o0/0 e[write]/4 fd 6/7/8 sock -1 cc 1 io 0x01/0x01)
~B
~^Z escape not available to multiplexed sessions
~?
Supported escape sequences:
 ~.   - terminate session
 ~B   - send a BREAK to the remote system
 ~R   - request rekey
 ~#   - list forwarded connections
 ~?   - this message
 ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
~?
Supported escape sequences:
 ~.   - terminate session
 ~B   - send a BREAK to the remote system
 ~R   - request rekey
 ~#   - list forwarded connections
 ~?   - this message
 ~~   - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
~& escape not available to multiplexed sessions
Shared connection to home.local closed.
error: writing to file: Broken pipe

A different variation of, I suspect, the same problem, is when it ends up in things like:
error (ignored): std::bad_alloc
error (ignored): std::bad_alloc
error: serialised integer<PHONE_NUMBER>918991461 is too large for type 'j'

I’m not sure whether I am doing this correctly, but this is the only way of rebuilding a remote host with entering the sudo password that I found somewhere on the wiki. I suspect what’s happening here is that, with the TTY attached, ssh is trying to interpret the ~ escape in the binary data that is being copied?
The workaround that I am using is to run the command without NIX_SSHOPTS once to let it copy the closure first, and then run in the second time with NIX_SSHOPTS to activate the system.
I think, it would be good to have an “official” reliable way of entering the password for --use-remote-sudo and not breaking stuff.

Transferred :)

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/how-can-i-nixos-rebuild-on-the-pi-without-getting-the-error-serialized-integer-is-too-large-for-type/39108/4

I am experiencing a similar issue when running:
➜ NIX_SSHOPTS="-o RequestTTY=force" nixos-rebuild --build-host machine --target-host machine --flake '.#target' switch --fast --use-remote-sudo

TTY allocation indeed seems to break the insertions of passwords, however, it can't get around allocating a TTY when wanting to authenticate as non-root and escalating with sudo later.
If I don't allocate a TTY, I am met with:
➜ nixos-rebuild --build-host machine --target-host machine --flake '.#target' switch --fast --use-remote-sudo
...
sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper                                                                                sudo: a password is required

The issue indeed seems to be some interaction between TTYs and --use-remote-sudo. This was my case, but I think it is more prevalent:
NIX_SSHOPTS='-tt' nixos-rebuild --build-host machine --target-host machine --flake '.#target' switch --verbose --fast --use-remote-sudo
building the system configuration...
Building in flake mode.
$ nix --extra-experimental-features nix-command flakes eval --raw .#nixosConfigurations."target".config.system.build.toplevel.drvPath --verbose
Running nix with these NIX_SSHOPTS: -tt -o ControlMaster=auto -o ControlPath=/tmp/nixos-rebuild.xtA49P/ssh-%n -o ControlPersist=60
$ nix --extra-experimental-features nix-command flakes copy --derivation --to ssh://superpim@raspberrypi /nix/store/<< hash >>-nixos-system-target-23.11.20231221.0b3d618.drv
warning: The interpretation of store paths arguments ending in 'drv' recently changed. If this command is now failing try again with '/nix/store/<< hash >>-nixos-system-target-23.11.20231221.0b3d618. drv^*'
$ ssh -tt -o ControlMaster=auto -o ControlPath=/tmp/nixos-rebuild.xtA49P/ssh-%n -0 ControlPersist=60 user@machine sudo --preserve-env=NIXOS_INSTALL_BOOTLOADER -- nix-store -r /nix/store/<< hash >>-nixos-system-target-23.11.20231221.0b3d618.drv --verbose
Shared connection to <IP_ADDRESS> closed.
$ ssh -tt -o ControlMaster=auto -o ControlPath=/tmp/nixos-rebuild.xtA49P/ssh-%n -0 ControlPersist=60 user@machine sudo --preserve-env=NIXOS_INSTALL_BOOTLOADER -- nix-env -p /nix/var/nix/profiles/system --set [sudo
] password for user:
warning: you did not specify '--add-root'; the result might be removed by the garbage collector /nix/store/wjx5fw1xmgfy19jzfrhh40a5mczrdzp7-nixos-system-zampieri-23.11.20231221.0b3d618
[sudo] password for user:

error: selector '[sudo]' matches no derivations
bash: line 2: $'\E[35': command not found
bash: line 2: $'1mwarning: \E[0m': command not found
bash: line 2: ...: command not found
: No such file or directory<<hash>>-nixos-system-target-23.11.20231221.0b3d618
Shared connection to <IP_ADDRESS> closed.

I think the commands get interjected up by the [sudo] password for user:-prompts and thus the commands start failing, as can be seen by the error: selector '[sudo]' matches no derivations.
I presume there is something wrong in pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh, but I don't know how to fix these TTY issues from there as we only call this command: https://github.com/NixOS/nixpkgs/blob/b06804faf11ee33325d40235e117fc80987fcd9c/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh#L144
The last change to this file was 35a8d78, to fix --use-remote-sudo too, but I can't seem to find an issue for it. Do you remember the context of your fix @rnhmjoj? Was the bug you describe in the commit message ordering related too? I can't gather that from your description in the commit.
I would love to contribute, but I am not sure where to continue. Help is appreciated.

The fix was about /run/current-system/sw/bin/sudo taking precedence over /run/wrappers/bin/sudo: the former doesn't work because it isn't setuid.
Anyway, if you want to use remote sudo with security.sudo.wheelNeedsPassword I recommend setting security.pam.enableSSHAgentAuth. If you think about it, allocating a tty and typing the password is really unnecessary as you've already authenticated yourself through SSH.

I briefly had nixos-rebuild switch --target-host working, but now it just hangs indefinitely. No luck with NIX_SSHOPTS="-o RequestTTY=force" and/or NIXOS_SWITCH_USE_DIRTY_ENV=1.

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/remote-nixos-rebuild-works-with-build-but-not-with-switch/34741/12


Gating and Early Arrival outline addendum

This is a continuation to #768
Background
On Sunday morning, during the time in which the authorities do the rounds and the event receives its permit, a ticketing party takes place in Central Camp. At the ticketing party, all burners currently inside the city are being ticketed again, and receive a permanent bracelet instead of the early arrival paper bracelet.  The ticketing party is not the end of early arrival phase. In fact, another batch of volunteers is scheduled to arrive that night, and those also has to be ticketed according to the early solution outline until the following day when the event officially opens.
In addition, during the whole early arrival phase up until the party, it is important to keep a counter of people inside the city that is separate from the regular counter.  This counter is important for Production because immediately after the party, the number of people inside the city, and the number of people inside the city during early arrival should match.
Suggested Solution

[x] In Event Admin Panel, implement a switch that toggles the event from Early Arrival ticketing logic, to normal ticketing logic (already implemented). This switch is used only once on Monday morning when the event is officially opened.
[ ] In Event Admin Panel, implement a switch that resets the state of all ticketed tickets. All tickets that were ticketed are now un-ticketed. Make sure that the state of those tickets is synced back to Drupal as well. This switch is used only once on Sunday morning, immediately before the ticketing party.
[ ] Implement a counter that counts burners during early arrival. This is a clicker kind of counter, and is also decremented when people leave, to always represent the current state of things. This counter is not reset once the tickets are reset, so it cannot be computed on the fly. Counter stops counting once early arrival phase is over.

Additional Notes

What is the best way to reset the tickets state? Simply delete tickets from database and resync? Iterate over all tickets and modify each? It is also possible that syncing back to drupal is not desired, this will have the benefit of people that used the ticket for early arrival to be unable to transfer it.
During ticketing party, the option to transfer tickets should be disabled.

@pandamichal , please approve this is in fact what you want.

I Approve :-)


Add support for Decline to Sign

The following changes have been made to the API:

There is a new parameter allow_decline for declining to sign signature requests
There is a new API status_code for declined requests
There is a new API variable is_declined on SignatureRequest objects
There is a new API variable decline_reason on Signature objects

any progress or news on this? as we require the allow_decline for our user flow

This support has been added


Validate config before running test

What would you like to be added:
Validate if config is correct before running test.
Why is this needed:
Currently, step can be either measurement step or phase step (modules are being added in #1634)
https://github.com/kubernetes/perf-tests/blob/18e90fc65c6b95c0bff96938458a77d74e19b27a/clusterloader2/api/types.go#L60
Unfortunately, this behaviour is not well implemented:
https://github.com/kubernetes/perf-tests/blob/14afe3828ba8d9eaa98aa8a9f5ddd0cdc5f8eebf/clusterloader2/api/extensions.go#L54
https://github.com/kubernetes/perf-tests/blob/14afe3828ba8d9eaa98aa8a9f5ddd0cdc5f8eebf/clusterloader2/pkg/test/simple_test_executor.go#L143
Current implementation does not validate if config is correct before running test.
From user experience perspective it would be much better to return error right after test starts.
Also, If I'm not wrong, if user specifies both measurements and phases, only measurements will be executed.

@marseel could I help out with this one?

@marseel could I help out with this one?

@lyzs90  Yes sure, I would appreciate it :)
If you will have some PR I can help with reviewing.

@lyzs90  Yes sure, I would appreciate it :)
If you will have some PR I can help with reviewing.

@lyzs90 - this long-standing PR is relevant to this one:
https://github.com/kubernetes/perf-tests/pull/142
It shows how should probably approach this problem - feel free to pick it up and continue working on that.

@lyzs90 - this long-standing PR is relevant to this one:
https://github.com/kubernetes/perf-tests/pull/142
It shows how should probably approach this problem - feel free to pick it up and continue working on that.

Thanks @wojtek-t I'll check it out
/assign

Thanks @wojtek-t I'll check it out
/assign

@wojtek-t I had a look at https://github.com/kubernetes/perf-tests/pull/142 and had some thoughts:

Currently Modules are being recursively compiled into steps at runtime. Correct me if I am wrong but the mapping passed to the Module seems static and there is no use case where runtime variables are passed in (unlike Objects). Hence to support validation of Modules, may I suggest to move loading of modules before test execution - after https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/pkg/test/test.go#L66, so that validation of the entire Config (less Objects) can be validated ahead of time
I understand that the current style of validation used to keep consistent with k8s, and I'm happy to stick with it. Just wanted to find out what are your thoughts on using a declarative approach like json schema? https://github.com/xeipuuv/gojsonschema

Checks like this and this could be simplified with https://json-schema.org/understanding-json-schema/reference/combining.html#combining-schemas
Basically cuts down on boilerplate, but we may still have to implement some custom validation for things like IsDNS1123Subdomain, file exists at objectTemplatePath, referenced tuning set has been declared etc.

@wojtek-t I had a look at https://github.com/kubernetes/perf-tests/pull/142 and had some thoughts:

Currently Modules are being recursively compiled into steps at runtime. Correct me if I am wrong but the mapping passed to the Module seems static and there is no use case where runtime variables are passed in (unlike Objects). Hence to support validation of Modules, may I suggest to move loading of modules before test execution - after https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/pkg/test/test.go#L66, so that validation of the entire Config (less Objects) can be validated ahead of time
I understand that the current style of validation used to keep consistent with k8s, and I'm happy to stick with it. Just wanted to find out what are your thoughts on using a declarative approach like json schema? https://github.com/xeipuuv/gojsonschema

Checks like this and this could be simplified with https://json-schema.org/understanding-json-schema/reference/combining.html#combining-schemas
Basically cuts down on boilerplate, but we may still have to implement some custom validation for things like IsDNS1123Subdomain, file exists at objectTemplatePath, referenced tuning set has been declared etc.

Currently Modules are being recursively compiled into steps at runtime. Correct me if I am wrong but the mapping passed to the Module seems static and there is no use case where runtime variables are passed in (unlike Objects). Hence to support validation of Modules, may I suggest to move loading of modules before test execution - after https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/pkg/test/test.go#L66, so that validation of the entire Config (less Objects) can be validated ahead of time

@mm4tt - for thoughts

I understand that the current style of validation used to keep consistent with k8s, and I'm happy to stick with it. Just wanted to find out what are your thoughts on using a declarative approach like json schema? https://github.com/xeipuuv/gojsonschema

The consistency with k8s has a benefit that you don't have to learn new stuff when you're operating in a single k8s ecosystem. I agree that this can reduce the boilerplate, but (a) this boilerplate is well-separated (b) it's fairly trivial, so I don't think it's actually that huge advantage. So I would rather stick to that for now.

Currently Modules are being recursively compiled into steps at runtime. Correct me if I am wrong but the mapping passed to the Module seems static and there is no use case where runtime variables are passed in (unlike Objects). Hence to support validation of Modules, may I suggest to move loading of modules before test execution - after https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/pkg/test/test.go#L66, so that validation of the entire Config (less Objects) can be validated ahead of time

@mm4tt - for thoughts

I understand that the current style of validation used to keep consistent with k8s, and I'm happy to stick with it. Just wanted to find out what are your thoughts on using a declarative approach like json schema? https://github.com/xeipuuv/gojsonschema

The consistency with k8s has a benefit that you don't have to learn new stuff when you're operating in a single k8s ecosystem. I agree that this can reduce the boilerplate, but (a) this boilerplate is well-separated (b) it's fairly trivial, so I don't think it's actually that huge advantage. So I would rather stick to that for now.

The consistency with k8s has a benefit that you don't have to learn new stuff when you're operating in a single k8s ecosystem. I agree that this can reduce the boilerplate, but (a) this boilerplate is well-separated (b) it's fairly trivial, so I don't think it's actually that huge advantage. So I would rather stick to that for now.

Noted on this 👍

The consistency with k8s has a benefit that you don't have to learn new stuff when you're operating in a single k8s ecosystem. I agree that this can reduce the boilerplate, but (a) this boilerplate is well-separated (b) it's fairly trivial, so I don't think it's actually that huge advantage. So I would rather stick to that for now.

Noted on this 👍

Currently Modules are being recursively compiled into steps at runtime. Correct me if I am wrong but the mapping passed to the Module seems static and there is no use case where runtime variables are passed in (unlike Objects). Hence to support validation of Modules, may I suggest to move loading of modules before test execution - after https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/pkg/test/test.go#L66, so that validation of the entire Config (less Objects) can be validated ahead of time
I think it makes sense, but let's double check with @mm4tt

Currently Modules are being recursively compiled into steps at runtime. Correct me if I am wrong but the mapping passed to the Module seems static and there is no use case where runtime variables are passed in (unlike Objects). Hence to support validation of Modules, may I suggest to move loading of modules before test execution - after https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/pkg/test/test.go#L66, so that validation of the entire Config (less Objects) can be validated ahead of time
I think it makes sense, but let's double check with @mm4tt

It makes a lot of sense :) Just a nit, you should move it after this to make sure that the config is valid after a custom modifications have been applied. There is also testConfig.Validate here that we could probably reuse or remove - it doesn't make sense to have two "validate" components.
In general, big +1 for extracting things out of ExecuteTest method. In my opinion, this method is too big. It does too many things and doesn't adhere to the single principle rule - it should just execute the test that is prepared and validated.

It makes a lot of sense :) Just a nit, you should move it after this to make sure that the config is valid after a custom modifications have been applied. There is also testConfig.Validate here that we could probably reuse or remove - it doesn't make sense to have two "validate" components.
In general, big +1 for extracting things out of ExecuteTest method. In my opinion, this method is too big. It does too many things and doesn't adhere to the single principle rule - it should just execute the test that is prepared and validated.

@mm4tt gotcha, I'll first submit a PR to extract module compilation out of ExecuteTest

@mm4tt gotcha, I'll first submit a PR to extract module compilation out of ExecuteTest

@mm4tt Actually since there might be multiple tests (via test suite / config paths), would it be worth moving the compilation and validation logic even higher up eg. before https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/cmd/clusterloader.go#L317 and https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/cmd/clusterloader.go#L323.
That way we can fail faster if any config is invalid. This would mean RunTest would only be left with basic checks, namespace deletion and test execution

@mm4tt Actually since there might be multiple tests (via test suite / config paths), would it be worth moving the compilation and validation logic even higher up eg. before https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/cmd/clusterloader.go#L317 and https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/cmd/clusterloader.go#L323.
That way we can fail faster if any config is invalid. This would mean RunTest would only be left with basic checks, namespace deletion and test execution

Sounds good. Let me know if there is anything I can help you with. Thanks!

Sounds good. Let me know if there is anything I can help you with. Thanks!


Minor clean up of EctoStrategy

Renamed embed_field? variable to embedded_field?
Extracted branching logic into cast_assoc/3 for the case when the association is
a list.

One more small comment, but LGTM


Added NPM packages support

This update drops PHP 5.3 support and add the NPM packages support to the library.
JSON extension is required for this to work!
Installation
In the meantime you can update to my fork adding to composer.json this code:
"repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/maicol07/Assets"
    }
  ]

and modifying this line to:
"stolz/assets": "dev-master"

Hi @maicol07,
First apologies for my late reply. Second I appreciate your initiative but I'm afraid this is not going to get merged for several reasons:

It modifies almost every line of code of the main library for no reason, masquerading the original contributors. There are also other netiquette related issues such adding personal branding to the source code of a Git based repo that I think I don't need to explain.
Drops support for older versions of PHP. I'm in favor in doing so as well as in modernizing the code style (to PSR-2 or even PSR-12) but this should be done as a standalone step, not as part of a new feature.
It requires JSON extension in composer.json. This prevents users who don't use/need NPM from installing the library if they don't have the extension. Lack of the extension should be handled in run time only when the NPM feature is used.
It assumes the library is installed in your public dir ($docroot = __DIR__) which will never be true when installed via Composer.
It seems out of scope for a library that focuses itself in simplicity and being framework agnostic to include support for every possible assets package manager out there. I know this PR is only for one package manager (NPM/Yarn) but think of the implications if this is added, it will leave the door open for others to follow the same path therefore deviating from the philosophy of the library. Besides, the library already has support for a generic package loading feature as well as a a feature to load assets from a directory which with minor tweaks could possibly be leveraged to achieve the same effect.
The new feature is not documented. You updated the API.md file (which BTW when updated via bin/generate_doc script yields a different file than your one) but there is no reference of the feature in the README file, making it virtually invisible.
The new feature lacks automatic tests.
Code quality and excessive complexity IMHO are not worth for the added value. The Cyclomatic and NPath complexities of the new code are unhealthily high (the highest of the whole library in fact). In other words, the NPM feature is the most complex part of the library.

Let me know your thoughts.

Hi @Stolz,
thanks for your reply. I'll answer you point by point:

I don't think my PR edits so much the basic structure of the library (Github shows that almost all is modified because my IDE (Phpstorm) has optimized indents (i. e. 4 spaces = 1 tab)). I've only added the NPM/Yarn feature with the required edits in other methods to work properly.
PHP 5.3 is indeed an old and almost unused version of PHP, that lacks security and performance (compared to newest versions like PHP 7.x). You can do this as a separate update and then I'll merge your changes to my fork.
I agree with you (actually, when I wrote the function I haven't thought about this) so I've added the check for the JSON extension when searching for the NPM package and moved ext-json to suggest section of composer.json
I've also deleted the default $docroot value. This requires adding it to config if you want to use the NPM/Yarn package search.
I know this, but NPM/Yarn is the most used package manager around the web (actually, I don't know others except for Bower but is outdated and deprecated by developers). Almost every CSS/JS lib is on the NPM package registry.
I didn't know about that script... However, this scripts returns an error:

Collecting files .. OK
Initializing parser .. OK
Parsing files
Parsing D:\Maicol\Documents\Progetti\Web\Assets\src\Manager.php
  No summary was found for this file
  No summary for class \Stolz\Assets\Manager
Storing cache in "D:\Maicol\Documents\Progetti\Web\Assets\doc" .. OK
Load cache                                                         ..    0.196s
Preparing template "xml"                                           ..    0.009s
Preparing 1 transformations                                        ..    0.000s
Build "elements" index                                             ..    0.000s
Replace textual FQCNs with object aliases                          ..    0.001s
Resolve @link and @see tags in descriptions                        ..    0.000s
Enriches inline example tags with their sources                    ..    0.000s
Build "packages" index                                             ..    0.053s
Build "namespaces" index and add namespaces to "elements"          ..    0.000s
Collect all markers embedded in tags                               ..    0.000s
Transform analyzed project into artifacts                          ..
Applying 1 transformations
  Initialize writer "phpDocumentor\Plugin\Core\Transformer\Writer\Xml"
  Execute transformation using writer "xml"
   0.099s
Analyze results and write report to log                            ..    0.000s
Parsing structure.xml
Generating pages
PHP Notice:  Array to string conversion in D:\Maicol\Documents\Progetti\Web\Assets\vendor\twig\twig\src\Loader\FilesystemLoader.php on line 39

Notice: Array to string conversion in D:\Maicol\Documents\Progetti\Web\Assets\vendor\twig\twig\src\Loader\FilesystemLoader.php on line 39
PHP Warning:  realpath() expects parameter 1 to be a valid path, array given in D:\Maicol\Documents\Progetti\Web\Assets\vendor\twig\twig\src\Loader\FilesystemLoader.php on line 40

Warning: realpath() expects parameter 1 to be a valid path, array given in D:\Maicol\Documents\Progetti\Web\Assets\vendor\twig\twig\src\Loader\FilesystemLoader.php on line 40
Complete

I don't know how to do automatic tests... (I've never used PHPUnit...)
I know it's complex but there isn't a standard value in package.json... every developer decides their own value, so the function searchs for the most commons...

I'll continue mantaining the fork so everyone who wants to use this feature can download it. However, with your help maybe we can simplify the most complex things...
Thank you for your understanding


RFC Process

I accidentally closed #1, This is the follow up pull request which should have incorporated all the feedback so far.
rendered

@sclevine @nebhale @ekcasey are there any more changes you’d like to see on this?


NEW UI FOR THE WEBSITE

Kind of issue

[x] Feature
[ ] Bug
[x] Design
[ ] Other, namely:

Description
the existing UI, thou simple, clear and straight-forward, it

doesn't have much space between the cards which give a congested feel
a new shade can be added to dark mode
a new filter, according to alphabets or the brand's industry can be added

I'm willing to work on this issue and would like to collaborate with others!

Hey @keerthinannepamula1 - thanks for the suggestion!
We've actually had a couple of re-designs in the pipeline for ages now. One of which is much faster than our current site (see https://wasm.simpleicons.org/ by @mondeja - but haven't implemented it as our contributor-base is mostly JS/TS devs.
We've also toyed with using a frontend framework like React, but the importance of keeping things 'simple' (as in, using core JS/TS functionality) put that to bed pretty swiftly.
Before you put any time and effort into this, it'd be good to have a proper discussion around features and UI suggestions.

Also, on

a new filter, according to alphabets or the brand's industry can be added

The website data is pulled directly from the main package. We don't have any database working behind-the-scenes, and adding industries / categories would require major re-work to our existing JSON structure.

@adamrusted thank you so much for the clarification!


PHOENIX-5716 Remove HBase 2.0 support

also update default Hbase 2.2 and 2.1 versions to latest and greatest

This is already merged, I forgot to close the PR.


Adding UTF-8 support for WideCharToMultiByte method - Windows Platform

If process environment variable value has non-english language characters (e.g. chinese ) then SIGAR_W2A(lpw, lpa, chars) is not able to make the conversion into multi byte properly. Fixing this by specifying code page as UTF-8.
SIGAR_A2W(lpa, lpw, bytes) will also use UTF-8 now for consistency.

Hi,Xeronix
I was facing the problem of Chinese characters showing, I modified the code you mentioned here, and complied the sigar source by myself, with win7, vs2015 and java1.8.   After all compiled ok though encountered some reference problem in the compiling.  But unfortunatly， after the modification you suggested, I didn't see the chinese characters showing correctly still.
I have read a lot of suggestions about fixing the chinese showing problem. The main point is to convert the string to utf-8 at c/c++ side (as asc and gb2312 were used for encoding at c/c++ or win side mixly), I also readed the c source of sigar, but didn't find where I can add this conversion, can you kindly give some tips?
In the ant buidling, looks like the jni was built by the perl script, I don't know about perl , so it is hard to read all the structure. It would be very grateful if you can provide some direction, or suggestions on looking into the sigar source and the way to resolve the chinese showing problem.
Thanks,
zhangw

Hi,
Which sigar API are you calling where this chinese character issue is
occurring ? Have you checked in debugger if characters are showing
correctly or not ?
On Thu, Feb 22, 2018 at 10:02 AM, zw3413<EMAIL_ADDRESS>wrote:

Hi,Xeronix
I was facing the problem of Chinese characters showing, I modified the
code you mentioned here, and complied the sigar source by myself, with
win7, vs2015 and java1.8. After all compiled ok though encountered some
reference problem in the compiling. But unfortunatly， after the
modification you suggested, I didn't see the chinese characters showing
correctly still.
I have read a lot of suggestions about fixing the chinese showing problem.
The main point is to convert the string to utf-8 at c/c++ side (as asc and
gb2312 were used for encoding at c/c++ or win side mixly), I also readed
the c source of sigar, but didn't find where I can add this conversion, can
you kindly give some tips?
In the ant buidling, looks like the jni was built by the perl script, I
don't know about perl , so it is hard to read all the structure. It would
be very grateful if you can provide some direction, or suggestions on
looking into the sigar source and the way to resolve the chinese showing
problem.
Thanks,
zhangw
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/hyperic/sigar/pull/91#issuecomment-367564566, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHJn6CzRA0s29M8_CQiPvocXPNgXWc8rks5tXO32gaJpZM4KPpYW
.

--
Regards,
Vipul

Hi,
All Chinese character from Sigar failed to show, regardless of the methods.
I tried some processing as per suggestions which is to resolve the JNI encoding issue like below:
remove all 0 in the bytes which returned by Sigar native method, remove the BOM head, then encode the bytes with utf-8.
This worked for some case really like: "Bluetooth �x(个人区域网", though some wrong character still there, but it looks much better than the original string returned by Sigar method.
But it is not the real way to resolve the encoding issue, as much Chinese still were not showed correctly.
When I have VM avalilable, I will provide you more snaps.
Thanks!

Hi,
All Chinese character from Sigar failed to show, regardless of the methods.
I tried some processing as per suggestions which is to resolve the JNI encoding issue like below:
remove all 0 in the bytes which returned by Sigar native method, remove the BOM head, then encode the bytes with utf-8.
This worked for some case really like: "Bluetooth �x(个人区域网", though some wrong character still there, but it looks much better than the original string returned by Sigar method.
But it is not the real way to resolve the encoding issue, as much Chinese still were not showed correctly.
When I have VM avalilable, I will provide you more snaps.
Thanks!

Hi  Vipul,
this is a new find, can you help me to address?
I compiled the source with your instruction, additionally added some minor modification as followed other thread of issue fixing.
But After I put the output sigar.jar and sigar-amd64-winnt.dll into lib of project. I got a incorrect net information output.  looks like below:
with the Sigar compiled
cfg.getName()	Loopback Pseudo-Interface 1
cfg.getDescription()	 Intel(R) Centrino(R) Ultimate-N 6300 AGN
cfg.getName()	Loopback Pseudo-Interface 1
cfg.getDescription()	 Intel(R) Centrino(R) Ultimate-N 6300 AGN
cfg.getName()	Intel(R) 82577LM Gigabit Network Connection-QoS Packet Scheduler-0000
cfg.getDescription()	 Intel(R) 82577LM Gigabit Network Connection-QoS Packet Scheduler-0000
cfg.getName()	Intel(R) 82577LM Gigabit Network Connection-WFP LightWeight Filter-0000
cfg.getDescription()	 Intel(R) 82577LM Gigabit Network Connection-WFP LightWeight Filter-0000
cfg.getName()	Loopback Pseudo-Interface 1
cfg.getDescription()	 Intel(R) Centrino(R) Ultimate-N 6300 AGN
cfg.getName()	WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
cfg.getDescription()	 WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
cfg.getName()	Bluetooth rt (Network Monitor)-QoS Packet Scheduler-0000
cfg.getDescription()	 Intel(R) 82577LM Gigabit Network Connection
cfg.getName()	Bluetooth rt (Network Monitor)-QoS Packet Scheduler-0000
cfg.getDescription()	 Intel(R) 82577LM Gigabit Network Connection
	with the original Sigar Binary

cfg.getName()		eth0
cfg.getDescription()		 WAN Miniport (IPv6)
cfg.getName()		eth1
cfg.getDescription()		 WAN Miniport (Network Monitor)
cfg.getName()		eth2
cfg.getDescription()		 Intel(R) 82577LM Gigabit Network Connection-QoS Packet Scheduler-0000
cfg.getName()		eth3
cfg.getDescription()		 Intel(R) 82577LM Gigabit Network Connection-WFP LightWeight Filter-0000
cfg.getName()		eth4
cfg.getDescription()		 WAN Miniport (IP)
cfg.getName()		eth5
cfg.getDescription()		 WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
cfg.getName()		eth6
cfg.getDescription()		 Bluetooth ?豸(???????ò??
cfg.getName()		eth7
cfg.getDescription()		 Intel(R) 82577LM Gigabit Network Connection
cfg.getName()		eth8
cfg.getDescription()		 WAN Miniport (IP)-QoS Packet Scheduler-0000
the code is as below:
 String[] ifaces = sigar.getNetInterfaceList();   for (int i = 0; i < ifaces.length; i++) {    NetInterfaceConfig cfg = sigar.getNetInterfaceConfig(ifaces[i]);    cfg.getName();    cfg.getDescription();   }
It is obsvious that the getName() and get Description() function didn't work properly, I didn't check any other similar problem functions. Could you help?
the issue binary were compiled by source of both of your branch and the master branch.
Below is the step I did the compiling:
tools: win7,  CMAKE 3.11.0-rc2,   jdk 1.8,  perl5,   ant 1.10.1,  vs2015

open a new cmd
run  vcvarsall.bat amd64
modified source according to
https://github.com/hyperic/sigar/issues/112
https://github.com/hyperic/sigar/issues/111
commented below lines in jni-build.xml, as these 2 os cannot be recognized by my environment.

and

"ant clean" and "ant"
The compiling is completed with successfully.


How to: convert dataframe to SDMX file

Hello! As I understand it, an SDMX writer was recently added to this library. (If I'm wrong about that, please feel free to close this!) I was wondering if it might be possible to get an example of how to use it to convert a relatively simple dataframe to an SDMX file. For example, suppose I'm starting with this dataframe:

TIME_DETAIL
UNIT_MEASURE
REF_AREA
OBS_VALUE

2016
PT
1
50

2017
PT
1
60

2016
PT
2
70

2017
PT
2
80

2016
USD
1
5000

2017
USD
1
6000

2016
USD
2
7000

2017
USD
2
8000

Assuming I also have access to a local DSD file that includes the corresponding dimensions/codes/attributes/etc, is it possible with this library to convert this into an SDMX file? If so, any code snippets or tips would be greatly appreciated!

Hi,
you are right: there is now a writer for SDMXML. But it is still
incomplete as it currently can output structure messages only, not
data messages or datasets. However, a more recent version of that
writer lives in a fork of pandaSDMX. It seems it does output data
sets. Hopefully, I'll find the time to merge this feature into
pandaSDMX soon. I didn't see the use case, but luckily you've proven
me wrong.
For now, I am working on fsspec support, i.e. the ability to work with
files in the cloud rather than just local. Adding the new SDMXML
writher should not be too much work though.
I should add that the SDMXML writer does not necessarily consume
pandas DataFrames, but a representation in terms of SDMX model
instances (see pandasdmx.model module). Hence, it would be interesting
to add a reader that takes a pandas DataFrame and converts it into the
model form.
Code contributions are welcome.
Leo
On 19/10/2020, brockfanning<EMAIL_ADDRESS>wrote:

Hello! As I understand it, an SDMX writer was recently added to this
library. (If I'm wrong about that, please feel free to close this!) I was
wondering if it might be possible to get an example of how to use it to
convert a relatively simple dataframe to an SDMX file. For example, suppose
I'm starting with this dataframe:

TIME_DETAIL
UNIT_MEASURE
REF_AREA
OBS_VALUE

2016
PT
1
50

2017
PT
1
60

2016
PT
2
70

2017
PT
2
80

2016
USD
1
5000

2017
USD
1
6000

2016
USD
2
7000

2017
USD
2
8000

Assuming I also have access to a local DSD file that includes the
corresponding dimensions/codes/attributes/etc, is it possible with this
library to convert this into an SDMX file? If so, any code snippets or tips
would be greatly appreciated!
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/dr-leo/pandaSDMX/issues/187

v1.2.0 has just been released. It includes the extended xml writer mentioned earlier. Re-open this issue as needed.

@dr-leo Thank you! I'm looking forward to trying it out. Your note about needing SDMX model instances (and not Pandas dataframes) is helpful. I wonder if you could point me to bare-bones example of "building" an SDMX model from scratch - if something like that exists. If not, any code links you could point me to, just to get started, would be helpful!

You can find example code in the GH repo under pandasdmx/tests. The
files test_model and writer/test_xml should be good starting-points.
The idea to convert a PD.DataFrame to an sdmxml file is interesting.
Good luck! - And I'd love to hear about the outcome.
On 29/10/2020, brockfanning<EMAIL_ADDRESS>wrote:

@dr-leo Thank you! I'm looking forward to trying it out. Your note about
needing SDMX model instances (and not Pandas dataframes) is helpful. I
wonder if you could point me to bare-bones example of "building" an SDMX
model from scratch - if something like that exists. If not, any code links
you could point me to, just to get started, would be helpful!
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/dr-leo/pandaSDMX/issues/187#issuecomment-718779957

Besides, yu could peruse test_model and the API docs for the model classes.
Start by instantiating a message.DataMessage, then a model.Dataset,
then add the Dataset to the message, add a message.Header, then
populate the Dataset with keys and observations iterating over the
dataframe. Shouldn't be a big deal.
On 29/10/2020, Leo<EMAIL_ADDRESS>wrote:

You can find example code in the GH repo under pandasdmx/tests. The
files test_model and writer/test_xml should be good starting-points.
The idea to convert a PD.DataFrame to an sdmxml file is interesting.
Good luck! - And I'd love to hear about the outcome.
On 29/10/2020, brockfanning<EMAIL_ADDRESS>wrote:

@dr-leo Thank you! I'm looking forward to trying it out. Your note about
needing SDMX model instances (and not Pandas dataframes) is helpful. I
wonder if you could point me to bare-bones example of "building" an SDMX
model from scratch - if something like that exists. If not, any code
links
you could point me to, just to get started, would be helpful!
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/dr-leo/pandaSDMX/issues/187#issuecomment-718779957


Use internal docker registry in k3s-setup

Description
We got hit with rate limit https://github.com/kyma-project/kyma-environment-broker/actions/runs/10280198864/job/28448537513

docker: toomanyrequests: You have reached your pull rate limit.

This PR changes the registry used in keb chart tests
Related issue(s)

/kind enhancement


[BUG] v0.12.1 - Newly created wallet without registration - cannot be opened by URL on another device

Describe the bug
A wallet that is created by simply clicking "Create New Wallet", without specifying a username and password - should work on other devices according to the link.
To Reproduce
Steps to reproduce the behavior:

Opening the main page of the site with LNBits 0.12.1
Create a wallet using the "Create New Wallet" link
Copy the wallet link to another browser or try to open it in private mode - we get HTTP 401 error from LNBits.
Also, the "Export to Phone with QR Code" section doesn't work for the same reason - the address on the phone shows a 401 error

Expected behavior
In early version 0.12.0 (pre-release) you had the following: if a wallet was created from the main page by clicking "Create New Wallet" and specifying a name of wallet, this wallet could be opened in another browser via URL (because no name and password were set, so it was supposed to be an easy way to access via URL). I suppose that's how it was intended. Otherwise, the user loses access to the funds and wallet if they saved the wallet URL address and deleted the cookie (maybe LocalStorage) of the site.
Desktop (please complete the following information):

LNbits version: 0.12.1
Database: sqlite

Because of a related problem, I think I understand what this is related to. The QR code has a link with no usr parameter. And with the current algorithm, to open a wallet you need to have either a usr parameter or an access token set by the login page by username and password.
Solution: if we implement the approach I described in the "My suggestion" paragraph and add usr directly to the QR code, we will have: for newly created wallets without username and password, we will open the wallet via the link in QR code, and if the user has already set a username and password after creating the wallet, the QR code will take him to the login page with a username and password request.

this was fixed by: https://github.com/lnbits/lnbits/pull/2340


Added: SQL builder toString function

Description
To continue to work done in #725 by @vorburger this PR intends to complete one of the remaining tasks.
Please use the following for functional testing: http://tpcg.io/QfG1joot [outdated] (directly run for sample output)
After this PR, I intend to write proper test statements as required.
Note: Another approach could have been directly using sb, I decided to do it this way any suggestions are welcome :)
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!

[ ] Commit message starts with the issue number from https://issues.apache.org/jira/projects/FINERACT/. Ex: FINERACT-646 Pockets API.

[ ] Coding conventions at https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions have been followed.

[ ] API documentation at https://github.com/apache/fineract/blob/develop/api-docs/apiLive.htm has been updated with details of any API changes.

[ ] Integration tests have been created/updated for verifying the changes made.

[ ] All Integrations tests are passing with the new commits.

[ ] Submission is not a "code dump".  (Large changes can be made "in repository" via a branch.  Ask on the list.)

Our guidelines for code reviews is at https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide

Thank you for the review, working on the required changes.
Thanks- Manthan

@vorburger No pain, I am willing to learn the correct way( I plan to stay with fineract for long :P)

Can you give a quick link to refer the correct formatting?
Please tell how can we optimize this? ( Maybe something I suggested in the Note above, replacing '?')
Want to help with the Checkstyle :D

PS re Checkstyle, see https://issues.apache.org/jira/browse/FINERACT-821, as per https://lists.apache.org/thread.html/r40d39423999b55a4ac2fa96aba0a16b91f80ac9f8e4ecb4c372c61c8%40<dev.fineract.apache.org> (also on https://markmail.org/message/hk42ip7feruoaooo), gradually fixing formatting problems allowing to enable new rules in https://github.com/apache/fineract/blob/develop/fineract-provider/config/checkstyle/checkstyle.xml is the way to go.


sidenav doesn't work, 'open' method bug

Bug, feature request, or proposal:
Bug is heppening when I try to call 'open' function of the sidenav
What is the expected behavior?
Sidenav content is shown on page
What is the current behavior?
Script error, sidenav content isn't shown on page
What are the steps to reproduce?
You can reproduce similar bug at https://material.angular.io/components/component/sidenav
http://prntscr.com/ffd33a
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
"dependencies": {
"@angular/animations": "^4.1.3",
"@angular/common": "^4.1.3",
"@angular/compiler": "^4.1.3",
"@angular/core": "^4.1.3",
"@angular/forms": "^4.1.3",
"@angular/http": "^4.1.3",
"@angular/material": "2.0.0-beta.5",
"@angular/flex-layout": "2.0.0-beta.8",
"@covalent/core": "1.0.0-beta.4",
"@angular/platform-browser": "^4.1.3",
"@angular/platform-browser-dynamic": "^4.1.3",
"@angular/router": "^4.1.3",
"@ngui/auto-complete": "^0.13.2",
"core-js": "^2.4.1",
"hammerjs": "^2.0.8",
"ng2-truncate": "^1.3.7",
"rxjs": "^5.4.0",
"zone.js": "^0.8.11",
"node-sass": "^4.5.3"
},
"devDependencies": {
"@angular/cli": "^1.0.5",
"@angular/compiler-cli": "^4.1.3",
"@types/jasmine": "2.5.45",
"@types/node": "~7.0.22",
"codelyzer": "~3.0.1",
"jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0",
"karma": "~1.4.1",
"karma-chrome-launcher": "~2.0.0",
"karma-cli": "~1.0.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-coverage-istanbul-reporter": "^0.2.0",
"protractor": "~5.1.2",
"ts-node": "~3.0.4",
"tslint": "~5.3.2",
"typescript": "~2.2.0"
}

I couldn't reproduce it in master. You can try out the latest build to see if it helps:
npm install https://github.com/angular/material2-builds.git

Then it should be fixed in the docs site here https://github.com/angular/material.angular.io .

The examples from the docs are hosted in this repo and they seem to work against master.

Note that the plunker example works fine. https://plnkr.co/edit/XClj0iC8G9JDZTU7gkCf?p=preview
Looks to be an issue with the docs site or the particular build of material it is using

doc is not fixed so this issue should stay opened

Not seeing this issue one the docs site anymore, so closing


feat: add pg create alter table expr translator

I hereby agree to the terms of the GreptimeDB CLA
What's changed and what's your intention?

Add alter table expr translator
Add create table expr translator

Checklist

[ ]  I have written the necessary rustdoc comments.
[ ]  I have added the necessary unit tests and integration tests.
[x]  This PR does not require documentation updates.

Refer to a related PR or issue link (optional)
#3174
waits for #3203

There is a translator called greptime. Is it the mysql protocol?

There is a translator called greptime. Is it the mysql protocol?

I guess it is called a dialect more precisely, instead of a protocol. No matter what we use which protocol in greptime, it always supports the show create table, and desc table statements.

I guess it is called a dialect more precisely, instead of a protocol. No matter what we use which protocol in greptime, it always supports the show create table, and desc table statements.

I noticed that the translator mod has two submods, one is greptime and the other is postgres. Many of their codes are similar, so I am curious whether there is a dialect of greptime or just MySQL.

I noticed that the translator mod has two submods, one is greptime and the other is postgres. Many of their codes are similar, so I am curious whether there is a dialect of greptime or just MySQL.

Good point. I renamed the greptime to mysql.


Work around Julia artifacts permission errors

Sometimes we get a randomly failing build, of the form:

ERROR: IOError: rm("C:\Users\svc-teamcity-ansible\.julia\artifacts\jl_wq7J7S\bin"): directory not empty (ENOTEMPTY)

The upstream issue and workaround is https://github.com/JuliaLang/julia/issues/52272#issuecomment-2093625309.
icacls .julia/artifacts /q /c /t /reset

Of course it is a lot of work to fix permissions manually on TeamCity agents, so we need something better.
@evetion suggested earlier to make a TeamCity job which can fix this error. Or perhaps we can just try fixing the permissions on each run, to never leave behind a broken agent.

I've made a build (and have scheduled it to run on a failing agent) https://dpcbuild.deltares.nl/buildConfiguration/Ribasim_Ribasim_Windows_FixJuliaArtifactPermissions?branch=continuous_control&buildTypeTab=overview&mode=builds
Let's see how often we need to run this, and either detect the failure and run it, or always run it.


Feature Request: Set-IntuneWin32App same Parameter as Add-IntuneWin32App (DetectionRule, InstallCommand, UninstallCommand)

Hi,
i know there is a similar issue for the detection rule only > https://github.com/MSEndpointMgr/IntuneWin32App/issues/131
We also need the ability to change the installcommand and uninstallcomand of an existance intune app via Set-IntuneWin32App.
Is it possible to have the same parameter for Set-IntuneWin32App like Add-IntuneWin32App
Regards
Martin

+1 here!


refactor: add validate to command/query level

I made some changes on the catlog_write_log_service and If you think it's the right way to do that I will then do the rest
btw there is some changes on the go.mod file(not the new module) please check that too~~
thank you for your time.

Hi, Thanks for your contribution.
There is CI/Build error in the github action pipeline, maybe the reason is removing google.golang.org/genproto. Revert this change in all go.mod file and the check for passing CI/Build

Hi, Thanks for your contribution. There is a CI/Build error in the GitHub action pipeline, maybe the reason is removing google.golang.org/genproto and mergo pkg (for now I suggest don't touch the packages, for refactoring pkg and removing useless pkg it's better a separated pull request). Revert this change in all go.mod file and the check for passing CI/Build

ok  I will dod that.

Hi, Thanks for your contribution. There is a CI/Build error in the GitHub action pipeline, maybe the reason is removing google.golang.org/genproto and mergo pkg (for now I suggest don't touch the packages, for refactoring pkg and removing useless pkg it's better a separated pull request). Revert this change in all go.mod file and the check for passing CI/Build

ok I will do that.

thanks :)

Hi, Thanks for your contribution. There is a CI/Build error in the GitHub action pipeline, maybe the reason is removing google.golang.org/genproto and mergo pkg (for now I suggest don't touch the packages, for refactoring pkg and removing useless pkg it's better a separated pull request). Revert this change in all go.mod file and the check for passing CI/Build

ok I will do that.

thanks :) Also, please update your fork branch, with upstream branch because, there is a small change in the go.mod file in pkg module.

ok, I will revert them and try to make it work, but I can't trigger CI process, should I create a new workflow on my forked project?

I changed permissions for showing github action status for other, for your next change you should see the pipeline status here, for now there is an error in the unit test

I changed permissions for showing github action status for others, for your next change you should see the pipeline status here, for now there is an error in the unit test

ok sure, I will manage to pass that unit test(good one), so every time I commit will trigger the ci right?

Yes, after each push the CI pipeline will trigger, and you can check its result. I recommend running unit tests locally with a make file that I prepared locally. For example, in root of project just type make unit-test after installing make in your OS, and it will run all unit-tests locally

thank you I will try that make unit-test.

Please also update README file, for adding ozz

Please also update README file, for adding ozz

yeah, I will add that after I fix that linting stuff.

my labeler action keep failing, does it matter? seems like some kind httpResource is not accessbile~~

my labeler action keep failing, does it matter? seems like some kind httpResource is not accessbile~~

Yes, Labler action has some bug, Also my linting action is very strict I should make it simpler, no problem for you.

Thanks for this pull request, and this enhancement, I appreciate about that :)
Just one note after resolving my review, please resolve that review with resolve button, it will look better 👍🏻

Thanks for this pull request, and this enhancement, I appreciate about that :) Just one note after resolving my review, please resolve that review with resolve button, it will look better 👍🏻

yeah, I didn't know github have that function~~


2FA

What happens if you have 2FA turned on, and your authenticator app craps out? How do you turn off 2FA? Am I DOA and need to reinstall the whole image again?

You can delete the "auth.json" file stored in the homebridge storage directory and restart homebridge. This will reset the credentials back to the default of admin/admin.

Thanks, i'm new to Homebridge.  How do I get to the Homebridge storage directory?

You would do it via SSH and standard Linux commands to change directory and remove the file.
https://github.com/homebridge/homebridge-raspbian-image/wiki/How-To-Connect-Via-SSH


search for @INC

When I search for %INC at https://docs.perl6.org/ it offers   "%INC (Perl 5)"
but when I search for the more common @INC it does not give any results.
IMHO it should also point to https://docs.perl6.org/language/5to6-perlvar that explains it.

See d1e2d734c37faeed6c9da5c2113209239ff256af


[Issue 9187][Client]Add support for the JSON format token.

Master Issue: #9187
Motivation
Currently, brokerClientAuthenticationParameters does not support being set via JSON formatted string, like:
brokerClientAuthenticationParameters={"token":"token-string"}

This PR Add support for the JSON format token setting.
Modifications

Add support for the JSON format token

Verifying this change
This change is already covered by existing tests, such as testAuthTokenConfigFromJson.

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks


chore: fix initialization race conditions in tests

This PR
Fixes initialization race conditions which were observed in tests
@liran2000  could you please check whether you need manul provider initialization in the test [1]. This collides with OF provider registration
[1] - https://github.com/open-feature/go-sdk-contrib/blob/main/providers/unleash/pkg/provider_test.go#L121-L123

@Kavindu-Dodan created #465.

@Kavindu-Dodan created #465.

Thank you, I will close this PR and accept the fix proposed through https://github.com/open-feature/go-sdk-contrib/pull/465


Split downloading of composer.phar and installing project dependencies in deploy:vendors task

I suggest to split deploy:vendors task to two separate tasks:

1st will just download composer.phar file.
2nd will install project Composer packages.

The benefit of this is we can execute custom tasks after 1st one is completed, for example: installation / update of global packages.
Example with Yii2 framework - we need to install Composer Asset Plugin before installing project packages:
composer global require "fxp/composer-asset-plugin:~1.1.1"

This is only needed on first installation, then we only need to update this plugin.
Skipping installation of this plugin leads to errors and application will not be working. Currently both Yii2 recipes (basic and advanced) lack this, that means users have to install it separately on their own.
This is not limited to just Yii2 of course.
Writing custom task is not appropriate because there is no way to inject custom task now and we need duplicate code from deploy:vendors.
Related - https://github.com/deployphp/deployer/issues/518.

:+1:

I think this is cool thing to have. May be in next release 4.x.

@elfet So what's the reason of closing in this case?

Because we found better solution: custom bin. Will be in next release.

OK, this sounds more clear.


Adding functional rules for ESLint

A lot of effort was put in to ensure Airnode is as functional in nature as possible. This especially applies to the node package, but includes some of the other packages too. In order to keep this style consistent going forward, I think we should include https://github.com/jonaskello/eslint-plugin-functional
I did a quick check and this can't be applied to some packages (like deployer) without massive changes, but it can be applied to the other packages relatively easily by disabling a few of the default rules. I also don't think it needs to be applied everywhere either so that's not a problem.

I don't think there is anything fundamentally wrong in doing local mutations, so I actually dislike this rule.
(And not only me: https://twitter.com/dan_abramov/status/1209116108122415104 )

I started to play with some functional rules: https://github.com/chainapi/chainapi-ui/blob/main/packages/eslint-plugin-api3/fp.recommended.js We could probably move/publish some of that into the api3dao org namespace
I found most rules were more annoying than helpful in the react/web context, but could prove frutiful here.
@Siegrift I agree that there is nothing fundamentally wrong with mutations, in fact it's pretty much required for fast code execution, but using a linting rule like this is very helpful bc it requires manually declaring local mutation, meaning that now the codebase is either safer and riper for optimization or it's developers have declared the rationale behind it's use (i.e., it's a hot code path and we determined it critical for XYZ)

another thing you can do is match .fp.ts as a file suffix for these rules

I also don't think there's anything necessarily wrong with local mutations, but I do lean pretty strongly to avoiding them where possible. I think it should be opt-out if you want to mutate a local variable. i.e. the developer should make a conscious decision that mutability is necessary for a given function and then add an eslint-disable-line ... comment.
I don't like the different extensions like .fp.ts. I think this is going to be too easy to forget.
I'm busy working on this at the moment and what I did is to create a separate .eslintrc.fp.js config with some base functional rules. Packages that are able to then extend this extra config, do so. Each package can optionally have it's own .eslintrc.js (that extends the base config and the "functional" config), or it can just get it's config from the base .eslintrc.js. Seems like this works pretty well

I'm not really sure how I feel about this. I'm affraid it'll be more anoying than usefull. But it depends on the rules we decide to enable. So I'm not against it but the set of rules should be sane enough not to be anoying :smile:

I spent some time looking into this over the weekend. You can set a pattern for variable names so that they can opt-out of the immutable data rule. I went with variable names prefixed with mutable and I quite like it since it makes the intention clear. There are very few places (outside tests) where it's even needed at the moment. I haven't added these rules to the protocol or deployer packages


Bug Fix fetching information_schema table timed out(#17692)

Proposed changes
Issue Number: close #17692
Problem summary
Describe your changes.
Checklist(Required)

[] Does it affect the original behavior
[] Has unit tests been added
[] Has document been added or modified
[] Does it need to update dependencies
[X] Is this PR support rollback (If NO, please explain WHY)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall


Added ProcessWire integration

You guys can test the extension at the demo of ProcessWire's new theme at http://demo.processwire.com/regular/processwire/. You can login with username bloguser and password processwire3

Thanks guys! I already gave the good news at the ProcessWire forum ;)


Don`t reload font on each ListView redraw

resolves #116

@Qutue, I could reproduce your issue and the PR fixes the major problem, though it's still far from ideal (loading time ~400ms for me). May I ask you to check whether this patch works for you?

@l4l ，Sorry for my late reply.
The patch worked well for me. As you say, the startup speed is still not that ideal, but it's already much better than before, and importantly the typing search responds in real time! Thanks for your work!


Feature request - Backup before update flag

Hi. First of all, great work on everything. I've been using Bookstack since about 2017 with very few issues :)
I currently run a script monthly via cron that:

Check git repo to see if I'm behind (and if so)
Backs up db/files
Updates BookStack
Sends me a notification of update/status

With system-cli, life is a little easier, and I can run something along the lines of this every month:
./BookStack/bookstack-system-cli backup backups/
./BookStack/bookstack-system-cli update

However, this means that regardless of whether there's a bookstack update available or not, my instance is backed up.
Ideally I would be able to run something like below, where If I provide a flag, e.g. --backup, bookstack would backup before it updates to the backup path provided (else default backup path)
./BookStack/bookstack-system-cli update --backup backups/

That way, this can be a defined as a standalone cron task
Additionally, I noticed that even if you are on the latest version of Bookstack and run update, you receive a "Your BookStack instance at [path/BookStack] has been updated!". It would be great if this returned a "Your BookStack instance is already on the latest version" instead.

Thanks for the suggestion @slimninja.
Personally, I'm not too fond of this due to the added complexity of supporting the merging two commands, each with their own options. I really want to try to keep things simple in this CLI, with specific commands for specific jobs.
I can understand the scenario/need though.
Maybe we can come at this from a different angle though, and look to implement a check-update command (or similar), that returns a status code depending on if there's an update or not.
That way you'd be able to do something like:
./bookstack-system-cli check-update && ./bookstack-system-cli backup backups/ && ./bookstack-system-cli update

Thanks for the suggestion @slimninja.
Personally, I'm not too fond of this due to the added complexity of supporting the merging two commands, each with their own options. I really want to try to keep things simple in this CLI, with specific commands for specific jobs.
I can understand the scenario/need though.
Maybe we can come at this from a different angle though, and look to implement a check-update command (or similar), that returns a status code depending on if there's an update or not.
That way you'd be able to do something like:
./bookstack-system-cli check-update && ./bookstack-system-cli backup backups/ && ./bookstack-system-cli update

That's a great idea, and solves my initial problem as well. Reduces overlap as well


fix: usage for schetag not accurate

这个 PR 实现什么功能/修复什么问题:
修正：调度标签使用量不准确

是否需要 backport 到之前的 release 分支:

release/3.2

/cc @zexi @yousong
/area region
/hold

Codecov Report

Merging #6535 into master will decrease coverage by 0.00%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master    #6535      +/-   ##
==========================================
- Coverage    7.17%    7.16%   -0.01%
==========================================
  Files         647      647
  Lines      108977   109057      +80
==========================================
  Hits         7819     7819
- Misses     100558   100638      +80
  Partials      600      600

Flag
Coverage Δ

#aFlag
7.16% <0.00%> (-0.01%)
:arrow_down:

Impacted Files
Coverage Δ

pkg/cloudcommon/db/rbac.go
1.17% <0.00%> (ø)

pkg/compute/models/buckets.go
1.17% <0.00%> (ø)

pkg/compute/models/dbinstances.go
0.83% <0.00%> (ø)

pkg/compute/models/disks.go
0.53% <0.00%> (ø)

pkg/compute/models/elasticcache_instances.go
0.96% <0.00%> (ø)

pkg/compute/models/elasticips.go
1.16% <0.00%> (ø)

pkg/compute/models/filters.go
0.00% <0.00%> (ø)

pkg/compute/models/guestnetworks.go
0.17% <0.00%> (ø)

pkg/compute/models/loadbalancernetworks.go
0.51% <0.00%> (ø)

pkg/compute/models/loadbalancers.go
1.38% <0.00%> (ø)

... and 5 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update daf9db8...1dfef4d. Read the comment docs.


Update example to release 0.2.0 and Kubernetes 1.14

I have updated the example in the README. Made the example slightly more generic so updates for future release would be easier. Bumped the version of kubeadm-dind-cluster to the latest release tag 0.2.0 and set Kubernetes to 1.14.

@pigmej I have only updated the README. But for some reason that is not clear to me the build fails.

/assign @pigmej

/assign @pigmej