C1 кодирует анализ покрытия, существуют для Ruby? [закрытый]

В соответствии с документацией :

Секреты могут быть смонтированы в виде томов данных или представлены в качестве переменных среды для использования контейнером в модуле.

Это пример модуля, который монтирует секрет в томе:

blockquote>
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

Установленные секреты обновляются автоматически

[1115 ] Когда секрет, уже использованный в томе, обновляется, спроецированные ключи в конечном итоге также обновляются. Kubelet проверяет, является ли установленный секрет свежим при каждой периодической синхронизации. Тем не менее, он использует свой локальный кеш для получения текущего значения секрета. Тип кэша настраивается с помощью поля (ConfigMapAndSecretChangeDetectionStrategy в структуре KubeletConfiguration). Его можно распространять с помощью watch (по умолчанию), на основе ttl или просто перенаправляя все запросы непосредственно на kube-apiserver. В результате общая задержка с момента обновления Секрета до момента, когда новые ключи проецируются на Pod, может составлять период синхронизации kubelet + задержка распространения кэша, где задержка распространения кэша зависит от выбранного типа кэша ( это равняется просмотру задержки распространения, ttl кеша или нулевого ядра соответственно.

Примечание. Контейнер, использующий Secret в качестве монтирования тома subPath, не будет получать обновления Secret.

Это пример модуля, который использует секреты от переменных среды:

blockquote>
apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
  restartPolicy: Never

В обоих случаях вам необходимо изменить спецификацию модуля. Вы можете сделать это, отредактировав Pod или Deployment с помощью kubectl edit:

$ kubectl edit pod  -n 
$ kubectl edit deployment  -n 

В качестве альтернативы вы можете внести изменения в файл YAML и применить его:

$ vi MyPod.yaml
$ kubectl apply -f MyPod.yaml

Самое важное, что вам нужно знаете, если вы измените спецификацию модуля, ваш модуль будет перезапущен для применения изменений. В случае развертывания будет происходить непрерывное обновление. В большинстве случаев это нормально. Если вам нужно сохранить состояние вашего приложения, лучший способ - хранить ценную информацию с помощью томов.

Если вы все еще хотите добавить секреты без перезапусков Pod, вы можете использовать общее хранилище, например NFS. Когда вы изменяете содержимое тома NFS, который уже смонтирован в модуле, изменения сразу же будут видны внутри модуля. В некоторых случаях вы можете выполнить оболочку внутри модуля и смонтировать том NFS вручную.

В качестве альтернативы, вы можете экспортировать содержимое секрета в файл, используя программу ksd
(или base64 -d) для декодирования закодированных в base64 значений в Secret:

kubectl get secret mysecret -o yaml | ksd > filename.yaml

и копируют его в модуль, используя следующую команду:

kubectl cp filename.yaml /:/tmp/secret.yaml

9
задан Rob Prouse 16 November 2008 в 22:47
поделиться

3 ответа

В данный момент существуют инструменты покрытия № C1 для Ruby. На самом деле нет никаких инструментов покрытия кроме RCov.

До недавнего времени было только возможно записать инструменты как это путем исправления или расширения интерпретатора МРТ в C. С тех пор приблизительно два года назад, также возможно расширить JRuby в Java, и существует на самом деле с прошлого месяца порт RCov для JRuby. Однако это требует и знания Ruby и C и довольно глубоких знаний в этом, потому что вожение с внутренностями МРТ не для слабого в глубине души.

Но только с Rubinius будет он быть возможным записать инструменты динамического анализа, такие как инструменты покрытия кода в самом Ruby, делая инструмент, пишущий доступный для намного большей части сообщества Ruby. Моя надежда состоит в том, что это, вместе с существенной финансовой поддержкой поставщиков инструмента (многие крупные поставщики IDE или продолжают работать или уже представили Ruby IDE, включая CodeGear (экс-Borland), IntelliJ, NetBeans, Eclipse, SapphireSteel (Ruby в Стали для Visual Studio) и даже Microsoft), приведет к быстрым инновациям в пространстве инструментов Ruby в 2009, и мы будем видеть вещи как C1, покрытие C2, сложность NPath, намного более мелкомодульное профилирование и так далее.

До тех пор единственная идея, которую я имею, состоит в том, чтобы использовать инструменты Java. Парни JRuby пытаются испустить надлежащие волшебные метаданные для создания их сгенерированного байт-кода, по крайней мере, проницаемым инструментами Java. Так, возможно, возможно использовать инструменты покрытия Java с JRuby. Однако я понятия не имею, работает ли это на самом деле, ни если это, как предполагается, работает.

12
ответ дан 4 December 2019 в 15:28
поделиться

Я не знаю об инструментах покрытия кода, но рубину позвонили тестеру мутации, перебивают.

Тестирование мутации включает изменение протестированного кода и видящий, заставляют ли те мутации модульные тесты перестать работать.

К сожалению, последний официальный драгоценный камень (версия 1.4.1) имеет некоторые ошибки в нем, таким образом, можно хотеть создать драгоценный камень с помощью кода от ответвления разработки. Это может только видоизменить методы экземпляра. Я не уверен, насколько надежный версия ответвления разработки также.

Тестирования мутации нужно избежать, если протестированный код может потенциально уничтожить систему (например, файлы удаления). Можно хотеть читать, FAQ о перебивают, и вопрос о FAQ, упоминая rcov по сравнению с перебивают.

0
ответ дан 4 December 2019 в 15:28
поделиться

Для записи NetBeans 7.0 имеет анализ покрытия кода для встроенного Ruby. Я не могу найти документы, объясняющие, является ли это C0 или C1 или нет, но это - что-то для слежения.

0
ответ дан 4 December 2019 в 15:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: